小码问答,有问必答!

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

JavaEE

收藏

1个回答

我要回答

  • author
    牛叔叔 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;
    }


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