Java中List去重的多种方法

复制代码
//Stream 去重:list.stream().distinct()
public static List removeDuplicate(List list) {
    HashSet hashSet = new HashSet(list);
    list.clear();
    list.addAll(hashSet);
    return list;
}


//通过 HashSet 剔除重复元素
public static List removeDuplicate(List list) {
    List newList = (List) list.stream().distinct().collect(Collectors.toList());
    return newList;
}


//通过HashSet剔除重复元素
public static List removeDuplicate(List list) {
    Set set = new HashSet();
    List newList = new ArrayList();
    for (Iterator iter = list.iterator(); iter.hasNext(); ) {
        Object next = iter.next();
        if (set.add(next)) {
            newList.add(next);
        }
    }
    list.clear();
    list.addAll(newList);
    return list;
}
//遍历 list,用 tempList.contain()
public static List removeDuplicate(List list) {
    List tempList = new ArrayList();
    for (int i = 0; i < list.size(); i++) {
        if (!tempList.contains(list.get(i))) {
            tempList.add(list.get(i));
        }
    }
    return tempList;
}

//循环 list 中的所有元素然后删除重复
public static List removeDuplicate(List list) {
    for (int i = 0; i < list.size(); i++) {
        for (int j = list.size() - 1; j > i; j--) {
           if (list.get(i).equals(list.get(j))) {
                list.remove(list.get(i));
            }
        }
    }
    return list;
}
相关推荐
阿杆2 小时前
同事嫌参数校验太丑,我直接掏出了更优雅的 SpEL Validator
java·spring boot·后端
Grey Zeng11 小时前
Java SE 25新增特性
java·jdk·jdk新特性·jdk25
雨白12 小时前
Java 线程通信基础:interrupt、wait 和 notifyAll 详解
android·java
架构师沉默16 小时前
设计多租户 SaaS 系统,如何做到数据隔离 & 资源配额?
java·后端·架构
Java中文社群17 小时前
重要:Java25正式发布(长期支持版)!
java·后端·面试
每天进步一点_JL18 小时前
JVM 类加载:双亲委派机制
java·后端
用户2986985301419 小时前
Java HTML 转 Word 完整指南
java·后端
渣哥19 小时前
原来公平锁和非公平锁差别这么大
java
渣哥19 小时前
99% 的人没搞懂:Semaphore 到底是干啥的?
java
J2K19 小时前
JDK都25了,你还没用过ZGC?那真得补补课了
java·jvm·后端