
Если в конструктор TreeMap был передан компаратор, натуральная сортировка игнорируется.
class User implements Comparable<User> {
String name;
User(String name) {
this.name = name;
}
@Override
public int compareTo(User o) {
return this.name.compareTo(o.name);
}
}
class MyComporator implements Comparator<User> {
@Override
public int compare(User o1, User o2) {
return o2.name.compareTo(o1.name);
}
}
// натуральная сортировка
Map<User, String> map = new TreeMap<>();
map.put(new User("Guest"), "guest");
map.put(new User("Admin"), "administrator");
map.put(new User("Zodiak"), "member");
for(User key: map.keySet()) {
System.out.println(key.name); // Admin Guest Zodiak
}
// с использованием компаратора
Map<User, String> map = new TreeMap<>(new MyComporator());
map.put(new User("Guest"), "guest");
map.put(new User("Admin"), "administrator");
map.put(new User("Zodiak"), "member");
for(User key: map.keySet()) {
System.out.println(key.name); // Zodiak Guest Admin
}