使用Set接口去重是Java中最常见方式,HashSet适用于无序场景,LinkedHashSet保持插入顺序,Stream.distinct()提供函数式编程支持,均依赖正确重写的equals()和hashCode()方法。

在Java集合框架中,元素去重最常用的方式是利用Set接口的特性,因为Set集合不允许存储重复元素。只要元素的equals()和hashCode()方法正确实现,插入时就会自动去重。
将List或其他集合转为HashSet,可快速去除重复元素。
equals()和hashCode()
示例代码:
List<String> list = Arrays.asList("a", "b", "a", "c");
Set<String> set = new HashSet<>(list);
// 结果:[a, b, c](顺序不保证)
如果需要保留元素首次出现的顺序,应使用LinkedHashSet。
立即学习“Java免费学习笔记(深入)”;
示例代码:
List<String> list = Arrays.asList("a", "b", "a", "c");
Set<String> set = new LinkedHashSet<>(list);
// 结果:[a, b, c](顺序与插入一致)
Java 8及以上版本支持通过Stream进行链式操作去重。
示例代码:
List<String> distinctList = list.stream()
.distinct()
.collect(Collectors.toList());
对于自定义类(如Person、Student),必须重写equals()和hashCode()方法,否则去重会失效。
@Data注解自动包含例如:
@Data
class Person {
private String id;
private String name;
}
// 使用@Data后,equals和hashCode已由Lombok生成
以上就是Java集合框架中元素去重方法的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号