📅  最后修改于: 2023-12-03 15:06:33.132000             🧑  作者: Mango
在Java中,我们经常需要从列表中过滤出唯一的元素。本文将介绍几种方法来实现这个过程。
HashSet是Java中的一种集合,它可以快速定位唯一值。我们可以先将列表中的元素添加到HashSet中,然后再把HashSet中的元素重新转换为列表即可。
List<String> list = new ArrayList<>();
list.add("apple");
list.add("banana");
list.add("apple");
list.add("orange");
HashSet<String> set = new HashSet<>(list);
List<String> uniqueList = new ArrayList<>(set);
System.out.println(uniqueList); // [banana, orange, apple]
Java8引入了Stream API,我们可以使用它来过滤出列表中的唯一值。Stream API提供了distinct()
方法,可以去除重复元素。具体代码如下:
List<String> list = Arrays.asList("apple", "banana", "apple", "orange");
List<String> uniqueList = list.stream().distinct().collect(Collectors.toList());
System.out.println(uniqueList); // [apple, banana, orange]
LinkedHashSet是HashSet的一个变种,它可以按照元素添加的顺序来存储元素,并且去除重复元素。我们可以先将列表中的元素添加到LinkedHashSet中,然后再把LinkedHashSet中的元素重新转换为列表即可。
List<String> list = new ArrayList<>();
list.add("apple");
list.add("banana");
list.add("apple");
list.add("orange");
LinkedHashSet<String> set = new LinkedHashSet<>(list);
List<String> uniqueList = new ArrayList<>(set);
System.out.println(uniqueList); // [apple, banana, orange]
以上三种方法均可实现从Java中的列表中过滤掉唯一值,具体使用哪种方法取决于具体情况。HashSet和LinkedHashSet适用于大规模数据的情况,而Stream API则适用于小规模数据,而且在具备jdk1.8及以上环境的情况下,优先建议使用Stream API。