是否可能存在Comparator
的身份表示?
在寻找简化Removing overloaded method in Java中代码的过程中,我想到了这一点,并得出结论,如果每次比较都导致对象相等,则顺序实际上不会改变,从而使操作成为 identity 。因此,我最终得到了这样一个(效率低下的)建议:
public static <T,G> List<G> toListOfNewType(List<T> inputList,Function<T,G> mapperFunction) {
return toListOfNewType(inputList,mapperFunction,(a,b) -> 0); // overloaded with comparator for 'G' type
}
但是我现在想知道的是,这是否也适用于具有自定义compareTo
实现的对象?给定Stream
实现,假设这样做真的安全吗?
编辑:我尝试过并保留了顺序的某些测试如下:
List<Integer> integers = List.of(1,3,45356,47424,34234,4,234234,234,-23,-34);
System.out.println(integers);
System.out.println(integers.stream().sorted((a,b) -> 0).collect(Collectors.toList()));
System.out.println(integers.stream().sorted((a,b) -> 0).parallel().collect(Collectors.toList()));
[1,-34]
[1,-34]
List<String> strings = List.of("aadad","Z","vsadasd","zadad","C","Aadasd");
System.out.println(strings);
System.out.println(strings.stream().sorted((a,b) -> 0).collect(Collectors.toList()));
System.out.println(strings.stream().sorted((a,b) -> 0).parallel().collect(Collectors.toList()));
[aadad,Z,vsadasd,zadad,C,Aadasd]
[aadad,Aadasd]
Set<Integer> integerSet = Set.of(1,-34);
System.out.println(integerSet);
System.out.println(integerSet.stream().sorted((a,b) -> 0).parallel().collect(Collectors.toList()));
System.out.println(integerSet.stream().sorted((a,b) -> 0).collect(Collectors.toList()));
[-34,1,0]
[-34,0]
Set<String> stringSet = Set.of("aadad","Aadasd");
System.out.println(stringSet);
System.out.println(stringSet.stream().sorted((a,b) -> 0).collect(Collectors.toList()));
System.out.println(stringSet.stream().sorted((a,b) -> 0).parallel().collect(Collectors.toList()));
[zadad,Aadasd,aadad]
[zadad,aadad]