📜  从列表 java 中删除重复项 (1)

📅  最后修改于: 2023-12-03 14:49:21.772000             🧑  作者: Mango

从列表 java 中删除重复项

在Java中,可能会遇到需要删除列表中的重复项的情况。这在数据分析和数据处理中非常常见。 下面是一些关于如何从列表java中删除重复项的方法。

1. 使用HashSet

一个HashSet是一个无序的集合,其中元素不能重复。可以使用HashSet来删除一个Java列表中的重复项。

List<String> listWithDuplicate = new ArrayList<>(Arrays.asList("foo", "bar", "foo", "baz", "foo"));
Set<String> setWithoutDuplicate = new HashSet<>(listWithDuplicate);
List<String> listWithoutDuplicate = new ArrayList<>(setWithoutDuplicate);
System.out.println(listWithoutDuplicate);

输出:

[foo, bar, baz]
2. 使用Java 8 Streams

Java 8引入了Streams API。它使我们能够更轻松地对列表中的元素进行操作和筛选

List<String> listWithDuplicate = new ArrayList<>(Arrays.asList("foo", "bar", "foo", "baz", "foo"));
List<String> listWithoutDuplicate = listWithDuplicate.stream().distinct().collect(Collectors.toList());
System.out.println(listWithoutDuplicate);

输出:

[foo, bar, baz]
3. 使用Java 8的Map

Java 8引入了简化我们使用Map时的代码的新方法。可以在Map中将元素作为键,值可以为任何对象。在这里,我们将元素作为值并将其映射到常量Object。

List<String> listWithDuplicate = new ArrayList<>(Arrays.asList("foo", "bar", "foo", "baz", "foo"));
List<String> listWithoutDuplicate = new ArrayList<>(new HashSet<>(listWithDuplicate));
Map<String, Object> mapWithDuplicates = new HashMap<>();
List<String> listWithoutDuplicate = listWithDuplicate.stream().filter(e -> mapWithDuplicates.putIfAbsent(e, Boolean.TRUE) == null).collect(Collectors.toList());
System.out.println(listWithoutDuplicate);

输出:

[foo, bar, baz]

以上是从列表java中删除重复项的三种方法。您可以根据自己的需要来使用其中之一。