小码问答,有问必答!

2019-06-13 09:22

list去重复效率最高的方法是什么

2019-06-13 09:22 回答了这个问题

大概有几种方式:

1、遍历集合,一一比较,重复的移除。

这种方式可以保证List集合原来的顺序不变。


public static List repeatListWayOne(List<String> list){
   for(int i = 0;i < list.size();i++){
       for(int j = i+1;j < list.size();j++){
           if(list.get(i).equals(list.get(j))){
               list.remove(j);
           }
       }
   }
   return list;
}



2、利用HashSet

HashSet实现了Set接口,不允许出现重复元素。可以基于这个想法,把List集合所有元素存入HashSet对象,接着把List集合元素全部清空,最后把HashSet对象元素全部添加至List集合中,这样就可以保证不出现重复元素。

public static List repeatListWayTwo(List<String> list){
  //初始化HashSet对象,并把list对象元素赋值给HashSet对象
  HashSet set = new HashSet(list);
  //把List集合所有元素清空
  list.clear();
  //把HashSet对象添加至List集合
  list.addAll(set);
  return list;
}


3、利用TreeSet

TreeSet集合也是实现Set接口,是一个有序的,并且无重复元素集合。

public static List repeatListWayThird(List<String> list){
   //初始化TreeSet对象,并把list对象元素赋值给TreeSet对象
   TreeSet set = new TreeSet(list);
   //把List集合所有元素清空
   list.clear();
   //把TreeSet对象添加至List集合
   list.addAll(set);
   return list;
}


实际测试,第二种方式可能效率更高一些。当然,你也可以看看是否有更好的办法。

0条评论

我要评论