Java中集合去重函数的实现方式
发布时间:2023-06-30 00:15:24
在Java中,集合去重是常见的操作需求。下面将介绍几种常见的实现方式,包括使用HashSet、LinkedHashSet、TreeSet、StreamAPI、自定义比较器等。
1. 使用HashSet
HashSet是根据对象的hashCode来确定元素是否相同的,因此使用HashSet可以很容易实现去重操作。可以通过将集合中的元素添加到HashSet中,再将HashSet中的元素重新添加回原集合,实现去重。
示例代码如下:
Set<T> set = new HashSet<>(list); // 利用HashSet去重 list.clear(); // 清空原集合 list.addAll(set); // 将去重后的元素重新添加回原集合
2. 使用LinkedHashSet
LinkedHashSet是HashSet的子类,除了能够去重外,还能保持元素的插入顺序。使用LinkedHashSet可以先将集合元素添加到LinkedHashSet中,再将LinkedHashSet中的元素重新添加回原集合,实现去重并保持顺序。
示例代码如下:
Set<T> set = new LinkedHashSet<>(list); // 利用LinkedHashSet去重并保持顺序 list.clear(); // 清空原集合 list.addAll(set); // 将去重后的元素重新添加回原集合
3. 使用TreeSet
TreeSet是一个有序集合,它可以根据元素的自然排序或自定义排序进行去重操作。使用TreeSet可以先将集合元素添加到TreeSet中,再将TreeSet中的元素重新添加回原集合,实现去重并排序。
示例代码如下:
Set<T> set = new TreeSet<>(list); // 利用TreeSet去重并排序 list.clear(); // 清空原集合 list.addAll(set); // 将去重后的元素重新添加回原集合
4. 使用StreamAPI
Java 8引入了StreamAPI,提供了强大的集合操作功能。可以利用StreamAPI的distinct()方法对集合进行去重操作。
示例代码如下:
list = list.stream().distinct().collect(Collectors.toList()); // 利用StreamAPI去重
5. 自定义比较器
如果集合中的元素是自定义对象,需要去重的规则不是基于hashCode或自然排序的,可以使用自定义比较器进行去重操作。
示例代码如下:
class MyComparator implements Comparator<T> {
@Override
public int compare(T o1, T o2) {
// 自定义比较逻辑,返回0表示相等
}
}
Set<T> set = new TreeSet<>(new MyComparator()); // 利用自定义比较器去重
List<T> list = new ArrayList<>(set); // 去重后转为List
以上是几种常见的Java中集合去重的实现方式。根据具体的需求,选择相应的方法进行操作即可。
