利用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的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持毛票票。