利用Java Set 去除重复object的方法
实例如下:
importjava.util.ArrayList; importjava.util.HashSet; importjava.util.List; importjava.util.Set; /** *编写者:CP *<br/>类描述:set集合针对String类型和8大基础数据类型过滤掉重复数据,如果存放的是其他类型对象,则需要重写hashCode方法和equals方法,当equals比较相等时,则会去比较hashCode值hashCode的值如果一致的话,则不会存进set */ publicclassSetDemo{ publicstaticvoidmain(String[]args){ Set<String>nameSet=newHashSet<String>(); nameSet.add("张三"); nameSet.add("李四"); nameSet.add("王五"); nameSet.add("张三"); //输出结果张三 李四 王五 for(Stringname:nameSet){ System.out.print(name+"\t"); } //List集合去除重复基础数据 List<String>nameList=newArrayList<String>(); nameList.add("张三"); nameList.add("李四"); nameList.add("王五"); nameList.add("赵六"); nameSet.addAll(nameList); //输出结果张三 李四 王五 赵六 for(Stringname:nameSet){ System.out.print(name+"\t"); } //去除编号和用户名一样的对象,需要重写equals方法和hashCode方法 Useradmin=newUser(1,"admin"); Useruser=newUser(2,"user"); Useruser1=newUser(2,"user"); Useradmin1=newUser(3,"admin"); Set<User>userSet=newHashSet<User>(); userSet.add(admin); userSet.add(user); userSet.add(admin1); userSet.add(user1); //输入结果admin1 admin3 user2 for(Useru:userSet){ System.out.print(u.username+u.id+"\t"); } System.out.println(user.equals(null)); } } classUser{ protectedIntegerid; protectedStringusername; publicUser(Integerid,Stringusername){ this.id=id; this.username=username; } /** *如果对象类型是User的话则返回true去比较hashCode值 */ @Override publicbooleanequals(Objectobj){ if(obj==null)returnfalse; if(this==obj)returntrue; if(objinstanceofUser){ Useruser=(User)obj; // if(user.id=this.id)returntrue;//只比较id //比较id和username一致时才返回true之后再去比较hashCode if(user.id==this.id&&user.username.equals(this.username))returntrue; } returnfalse; } /** *重写hashcode方法,返回的hashCode不一样才认定为不同的对象 */ @Override publicinthashCode(){ // returnid.hashCode();//只比较id,id一样就不添加进集合 returnid.hashCode()*username.hashCode(); } }
以上这篇利用JavaSet去除重复object的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持毛票票。