1丶使用LinkedHashSet删除arraylist中的重复数据
说明 : LinkedHashSet在内部完成两件事 :
1丶删除重复数据
2丶保持添加到其中的数据的顺序
@Test
public void test8() {
// 定义集合
ArrayList<Integer> numbersList = new ArrayList<>(Arrays.asList(1, 1, 2, 3, 3, 3, 4, 5, 6, 6, 6, 7, 8));
System.out.println(numbersList);
// 去重
LinkedHashSet<Integer> hashSet = new LinkedHashSet<>(numbersList);
ArrayList<Integer> listWithoutDuplicates = new ArrayList<>(hashSet);
System.out.println(listWithoutDuplicates);
}
结果为:
[1, 1, 2, 3, 3, 3, 4, 5, 6, 6, 6, 7, 8]
[1, 2, 3, 4, 5, 6, 7, 8]
2丶使用java8新特性stream进行List去重
说明 : 使用steam的distinct()方法返回一个由不同数据组成的流,通过对象的equals() 方法进行比较。
@Test
public void test8() {
// 定义集合
ArrayList<Integer> numbersList = new ArrayList<>(Arrays.asList(1, 1, 2, 3, 3, 3, 4, 5, 6, 6, 6, 7, 8));
System.out.println(numbersList);
// 去重
List<Integer> listWithoutDuplicates = numbersList.stream().distinct().collect(Collectors.toList());
System.out.println(listWithoutDuplicates);
}
结果为:
[1, 1, 2, 3, 3, 3, 4, 5, 6, 6, 6, 7, 8]
[1, 2, 3, 4, 5, 6, 7, 8]
至于循环遍历的方式, 这里不做举例了, 此种方法效率低, 性能消耗大, 万不得已不可取 !