我有以下课程
class A implements Comparable<A> {
private String name;
public A(String name) {
this.name = name;
}
public String getName() {
return name;
}
@Override
public int compareTo(A o) {
return o.getName().compareTo(this.name);
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
A a = (A) o;
return name.equals(a.name);
}
@Override
public int hashCode() {
return Objects.hash(name);
}
}
现在我的理解是,下面的代码应该产生一些类名或 null 但不是 IllegalStateException,如 java 文档中所述
如果此 Spliterator 的源由 Comparator 排序,则返回该 Comparator。如果源按自然顺序排序,则返回 null。否则,如果源未排序,则抛出 IllegalStateException。
List<A> arrayList = new ArrayList<>();
arrayList.add(new A("Y"));
arrayList.add(new A("G"));
arrayList.add(new A("J"));
arrayList.add(new A("A"));
arrayList.add(new A("Z"));
arrayList.sort(A::compareTo);
Comparator<? super A> comparator = arrayList.spliterator().getComparator();
System.out.println(comparator);
编辑 2
我相信我无法让您了解我在寻找什么。以此为例:
SortedSet<String> set = new TreeSet<>( Collections.reverseOrder() );
set.add("A");
set.add("D");
set.add("C");
set.add("B");
System.out.println(set);
System.out.println(set.spliterator().getComparator());
这输出为
[D, C, B, A]
java.util.Collections$ReverseComparator@7852e922
现在 Collections.reverseOrder() 只是 Comparator 的一个实现
由于这产生了正确的答案,我对我的代码的期望也是它应该输出一个像上面这样的类名。
那么我做错了什么?