list集合 去重复 的 4种方法

经常遇到list去重复的要求,   目前遇到的分以下 三种情况

 

第一种  list<String>

//list 去重

public static List removeDuplicate(List list){
List listTemp = new ArrayList();
for(int i=0;i<list.size();i++){
if(!listTemp.contains(list.get(i))){
listTemp.add(list.get(i));
}
}
return listTemp;
}

第二种 list<Object>

有一种是使用set的方式

Set<Object> set = new TreeSet<>(new Comparator<Object>() {
@Override
public int compare(Objecto1, Object o2) {
// 这里按照自己的需求来添加属性即可  
return (o1.getId().compareTo(o2.getId()) );
};
});
set.addAll(newlist);
newlist = new ArrayList<>(set);

 

第三种   list<Object>

//使用 set 去重复会打乱顺序,  实在不行就去用 最普通的去重复
// 这个有点消耗资源的  ..


for (int i = 0; i < newlist.size(); i ++) {
Object outU = newlist.get(i);
for (int j = newlist.size() - 1; j > i; j--) { // 内层循环从 size() -1开始
Object inU = newlist.get(j);
if (inU.getId().equals(outU.getId()) ) {
newlist.remove(j);
}
}

}

 

 

 

发现一种更简单的   第四种

 

HashSet h = new HashSet(emailList);
emailList.clear();
emailList.addAll(h);

 

posted @ 2020-01-20 16:36  喜欢22度的晴天  阅读(2203)  评论(0编辑  收藏  举报