使用Set接口进行去重,但是需要注意的是这样去重会打乱原来List中数据的顺序。
List<Integer> list = Arrays.asList(1, 2, 3, 2, 4, 4, 5, 5, 6);
Set<Integer> set = new HashSet<>(list);
List<Integer> deduplicatedList = new ArrayList<>(set);
System.out.println(deduplicatedList); // 输出: [1, 2, 3, 4, 5, 6]
使用LinkedHashSet保留插入顺序
List<Integer> list = Arrays.asList(1, 2, 3, 2, 4, 4, 5, 5, 6);
Set<Integer> set = new LinkedHashSet<>(list);
List<Integer> deduplicatedList = new ArrayList<>(set);
System.out.println(deduplicatedList); // 输出: [1, 2, 3, 4, 5, 6],保持了插入顺序
使用stream流进行去重
List<Integer> list = Arrays.asList(1, 2, 3, 2, 4, 4, 5, 5, 6);
List<Integer> deduplicatedList = list.stream().distinct().collect(Collectors.toList());
System.out.println(deduplicatedList); // 输出: [1, 2, 3, 4, 5, 6]
手动去重
List<Integer> list = Arrays.asList(1, 2, 3, 2, 4, 4, 5, 5, 6);
List<Integer> deduplicatedList = new ArrayList<>();
Set<Integer> set = new HashSet<>();
for (Integer item : list) {
if (set.add(item)) { // 如果添加成功,说明是第一次遇到这个元素
deduplicatedList.add(item);
}
}
System.out.println(deduplicatedList); // 输出: [1, 2, 3, 4, 5, 6]
以上四种方式都可以完成对List列表的去重操作,可以根据自己的实际情况任选其一。