我在sorted()之后使用了distenict(),并且在列表流上相同都给出了差异结果
List<String> list1 = Arrays.asList("aaaaa", "b", "lll", "kkk", "kkk");
List<String> list2 = Arrays.asList("h", "kkk", "mmmm");
List<String> list3 = Stream.concat(list1.stream(), list2.stream()).collect(Collectors.toList());
System.out.println("=======================================");
list3.stream().distinct().sorted(Comparator.comparing(String::length)).forEach(System.out::println);
; // System.out.println(g);
System.out.println("=======================================");
list3.stream().distinct().forEach(System.out::println);
我想你是在问为什么你第二次打电话
distinct()
排队
list3.stream().distinct().forEach(System.out::println);
打印出的结果与该行第一次的结果不同
list3.stream().distinct().sorted(Comparator.comparing(String::length)).forEach(System.out::println);
这是因为您正在处理列表中的元素流。首先,您只从该流中获取不同的结果,然后在打印之前对该流进行排序。
所有这些操作仅发生在流上。他们不会修改流的后备列表。因此 List 中元素的顺序和内容保持不变。
因此,您的第二个不同的流发生在同一个原始未排序列表上。