Я прочитал о списке сортировки в алфавитном порядке, такие как: Hashmap sorting, Sorting MapsСортировать разделы Карты по алфавиту
У меня есть Map<String, Integer>
со значениями, такими как
Tarantulas, 6
Lions, 5
Snakes, 2
Zoopies, 2
Zappin, 2
Chapas, 1
Zong Zwing, 1
Chingos, 1
Chapis, 1
Grouches, 0
мне нужно (ТОЛЬКО) сортировать разделы, которые имеют одинаковые точки в алфавитном порядке. Это пример данных, поэтому не будет знать, что фактические значения в Карте поэтому должны сортироваться на основе любых значений. Я уже сгруппированы/отсортированы по значениям с помощью:
public <K, V extends Comparable<V>> Map<K, V> sortByValues(final Map<K, V> map) {
Comparator<K> valueComparator = new Comparator<K>() {
public int compare(K k1, K k2) {
int compare = map.get(k2).compareTo(map.get(k1));
if (compare == 0) {
return 1;
} else {
return compare;
}
}
};
Map<K, V> sortedByValues = new TreeMap<K, V>(valueComparator);
sortedByValues.putAll(map);
return sortedByValues;
}
Это ожидаемый результат:
Tarantulas, 6
Lions, 5
Snakes, 2
Zappin, 2
Zoopies, 2
Chapas, 1
Chapis, 1
Chingos, 1
Zong Zwing, 1
Grouches, 0
Так вопрос: Как я сортирую только те участки карты, которые имеют те же точки (Целочисленные значения), а остальное как есть?
Я использую Java 7.
Является ли использование карты обязательной? Вместо этого я бы использовал набор объектов. – SimoV8
Я использовал компаратор. Будет ли добавлен этот код к вопросу, хотя я не думаю, что это возможно полезно. Вы можете видеть, что карта сортируется в соответствии со значением и что значения Integer на карте группируются вместе. –
Вы не должны использовать карту. Используйте список, где Animal - класс с именем и значением. Сортируйте его с помощью компаратора, который сортирует по значению, затем сортирует по имени. –