List数据去重的4种有效方法

使用java8新特性stream进行List去重 ( distinct()方法**)**

java 复制代码
public static List<String> delRepeat(List<String> list) {
     List<String> myList = list.stream().distinct().collect(Collectors.toList());
     return myList ;
}

借助Set的特性进行去重set和list转换去重

java 复制代码
/**
     * 去除重复数据
     * 由于Set的无序性,不会保持原来顺序
     * @param list
     */
    public static List<String> list distinct(List<String> list) {
        final boolean sta = null != list && list.size() > 0;
        List doubleList= new ArrayList();
        if (sta) {
            Set set = new HashSet();
            set.addAll(list);
            doubleList.addAll(set);
        }
        return doubleList;
    }

遍历List集合,将元素添加到另一个List集合中

java 复制代码
public static List<String> delRepeat(List<String> list) {
      List<String> listNew = new ArrayList<String>();
      for (String str : list) {
           if (!listNew.contains(str)) {
               listNew.add(str);
           }
       }
      return listNew ;
}

利用set集合特性保持顺序一致去重

java 复制代码
// Set去重并保持原先顺序的两种方法
   public static void delRepeat(List<String> list) {
       //方法一
       List<String> listNew = new ArrayList<String>(new TreeSet<String>(list));
       //方法二
       List<String> listNew2 = new ArrayList<String>(new LinkedHashSet<String>(list));
   }
相关推荐
白白白小纯19 小时前
算法篇—返回倒数第k个节点
c语言·数据结构·算法·leetcode
无忧.芙桃19 小时前
数据结构之堆
c语言·数据结构·c++·算法·
小蒋学算法19 小时前
算法-删除元素后最大固定点数目-典型最长增长序列算法
数据结构·算法
白白白小纯20 小时前
算法篇—链表的中间节点
c语言·数据结构·算法·leetcode
程序喵大人20 小时前
【C++进阶】STL容器与迭代器 - 04 list 和 forward_list 用节点换稳定位置
开发语言·c++·list
pluviophile_s1 天前
数据结构:第6讲:树与二叉树
数据结构·笔记
来一碗刘肉面1 天前
字符串模式匹配(朴素模式匹配算法与KMP算法)
数据结构·算法
code bean2 天前
【C#】 `Channel<T>` 深度解析:生产者-消费者模式的现代解法
数据结构·c#
storyseek2 天前
前缀和实现Kogge-Stone算法
数据结构·算法
元Y亨H2 天前
深度解构:数据结构与算法的理论基石与工程演进
数据结构·算法