使用Set去重最有效,推荐LinkedHashSet保持顺序,或stream API链式操作,注意重写equals和hashCode。

在Java中,快速删除集合中的重复元素最有效的方式是利用Set集合的特性:不允许存储重复元素。通过将原集合转换为Set,即可自动去重。以下是几种常见且实用的方法。
使用HashSet去重(无序)
如果不需要保持元素的原始顺序,可以将List转换为HashSet,再转回List。
- 创建一个包含重复元素的List
- 将其传入HashSet构造函数进行去重
- 再转换为ArrayList或其他List实现
示例代码:
Set<String> set = new HashSet(originalList);
List<String> uniqueList = new ArrayList<>(set);
使用LinkedHashSet保持插入顺序
若希望保留元素第一次出现的顺序,应使用LinkedHashSet,它在去重的同时维护插入顺序。
立即学习“Java免费学习笔记(深入)”;
这是大多数场景下的推荐做法。
示例代码:
List<String> uniqueList = new ArrayList<>(new LinkedHashSet<>(originalList));
这一行代码简洁高效,适用于大多数去重需求。
使用Stream API(Java 8+)
借助Stream的distinct()方法也能实现去重,适合需要链式操作或结合其他过滤逻辑的情况。
示例代码:
List<String> uniqueList = originalList.stream()
.distinct()
.collect(Collectors.toList());
注意:distinct()依赖元素的equals和hashCode方法,确保你的对象正确重写了这两个方法。
基本上就这些。选择哪种方式取决于是否需要保持顺序以及使用的Java版本。日常开发中,new ArrayList(new LinkedHashSet<>(list)) 是最常用也最可靠的写法。不复杂但容易忽略细节。


