java I know treeset按字典顺序打印元素,这在这里没有发生
有人能给我解释一下“obj”树集的输出吗?我知道treeset按字典顺序打印元素,这在这里是不会发生的
枚举名{ 爱丽丝、史密斯、鲍勃、琼斯 }
public class Test {
public static void main(String[] args) {
Set<Name> obj = new TreeSet<>();
obj.add(Name.Alice);
obj.add(Name.Smith);
obj.add(Name.Bob);
Set<String> set = new TreeSet<>();
set.add("Alice");
set.add("Smith");
set.add("Bob");
System.out.println("Enum set:");
for (Name d : obj) {
System.out.println(d);
}
System.out.println("\nNormal tree set:");
for (String d : set) {
System.out.println(d);
}
}
}
**Output**
Enum set:
Alice
Smith
Bob
Normal tree set:
Alice
Bob
Smith
# 1 楼答案
您可能已经声明了
Enum
,如下所示:如果您看到
Enum
类的compareTo()
方法的实现,那么它将使用ordinal
枚举常量(它在枚举声明中的位置,其中初始常量被指定为零序数)您需要声明
Enum
常量,如下所示,以获得所需的结果:如果不希望修改
Enum
常量的顺序,则需要在创建TreeSet
实例时提供Comparator
,如下例所示: