📅  最后修改于: 2023-12-03 15:31:34.018000             🧑  作者: Mango
在开发过程中,经常需要对数据结构进行操作,其中最常见的操作就是查找重复元素。在Java中,我们可以使用不同的方法来查找列表中的重复元素。本文将介绍几种不同的方法来实现这个任务。
Set是Java集合框架中的一种数据结构,它只包含不重复元素。我们可以遍历列表中的每个元素,将它们加入Set中,如果Set中已经包含了该元素,表示该元素重复。以下是示例代码:
List<String> list = Arrays.asList("A", "B", "C", "A", "D", "E", "B");
Set<String> set = new HashSet<>();
List<String> duplicateElements = new ArrayList<>();
for (String element : list) {
if (!set.add(element)) {
duplicateElements.add(element);
}
}
System.out.println("Duplicate elements: " + duplicateElements);
输出:
Duplicate elements: [A, B]
Map也是Java集合框架中的一种数据结构,它可以将一个值与一个键相关联。我们可以遍历列表中的每个元素,将它们作为键存入Map中,如果Map中已经包含了该键,表示该元素重复。以下是示例代码:
List<String> list = Arrays.asList("A", "B", "C", "A", "D", "E", "B");
Map<String, Integer> map = new HashMap<>();
List<String> duplicateElements = new ArrayList<>();
for (String element : list) {
Integer count = map.get(element);
if (count == null) {
map.put(element, 1);
} else {
map.put(element, count + 1);
}
}
for (Map.Entry<String, Integer> entry : map.entrySet()) {
if (entry.getValue() > 1) {
duplicateElements.add(entry.getKey());
}
}
System.out.println("Duplicate elements: " + duplicateElements);
输出:
Duplicate elements: [A, B]
Java 8引入了一些新特性,其中包括流(Stream)。我们可以使用流来处理列表中的元素,查找重复元素并返回一个新的列表。以下是示例代码:
List<String> list = Arrays.asList("A", "B", "C", "A", "D", "E", "B");
List<String> duplicateElements = list.stream()
.distinct()
.filter(element -> list.indexOf(element) != list.lastIndexOf(element))
.collect(Collectors.toList());
System.out.println("Duplicate elements: " + duplicateElements);
输出:
Duplicate elements: [A, B]
本文介绍了三种不同的方法来查找列表中的重复元素。使用Set和Map的方法可以找到所有的重复元素,而使用Java 8流的方法只能找到重复出现的元素。你可以选择适合你需求的方法来处理你的数据结构。