TreeMap. Comparator

TreeMap. Comparator

Если в конструктор 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
}
Коллекции