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

📅  最后修改于: 2023-12-03 15:06:33.837000             🧑  作者: Mango

从列表 Java 中删除重复项

Java 列表中的重复项为我们的程序带来了不少问题,因此在某些场合下需要对列表中的重复项进行删除。

下面是一些删除 Java 列表中重复项的方法,你可以根据自己的需求进行选择。

使用 Set

可以使用 Set 去重,因为 Set 中不能有重复元素,所以我们可以把 List 中的元素都添加到 Set 中,然后重新构造一个 List 即可。

List<Integer> list = new ArrayList<>();
list.add(1);
list.add(2);
list.add(1);

Set<Integer> set = new HashSet<>(list);
List<Integer> newList = new ArrayList<>(set);

System.out.println(newList); // [1, 2]
使用 Stream

Java 8 及以后的版本提供了 Stream 操作,可以使用 Stream 去重。

List<Integer> list = new ArrayList<>();
list.add(1);
list.add(2);
list.add(1);

List<Integer> newList = list.stream().distinct().collect(Collectors.toList());

System.out.println(newList); // [1, 2]
使用 LinkedHashSet

LinkedHashSet 是一个基于哈希表实现的 Set,它可以保留元素插入顺序,并且去重。

List<Integer> list = new ArrayList<>();
list.add(1);
list.add(2);
list.add(1);

Set<Integer> set = new LinkedHashSet<>(list);
List<Integer> newList = new ArrayList<>(set);

System.out.println(newList); // [1, 2]
使用 TreeSet

TreeSet 是一个基于红黑树实现的 Set,它可以保证元素有序,并且去重。

List<Integer> list = new ArrayList<>();
list.add(1);
list.add(2);
list.add(1);

Set<Integer> set = new TreeSet<>(list);
List<Integer> newList = new ArrayList<>(set);

System.out.println(newList); // [1, 2]

以上是常用的几种方法,根据实际情况选择合适的方法即可。