Я пытаюсь сортировать ConcurrentSkipListMap по значению в Java, вот мой код:Как отсортировать ConcurrentSkipListMap по значению?
ConcurrentSkipListMap<String,Float> cslMap = new ConcurrentSkipListMap(new Comparator() {
public int compare(Object o1,Object o2) {
return ((Comparable)((Map.Entry)(o1)).getValue()).compareTo(((Map.Entry)(o2)).getValue());
}
});
cslMap_Map.put("B",0.2f);
cslMap_Map.put("A",0.1f);
cslMap_Map.put("C",1f);
получил сообщение об ошибке при компиляции:
Исключение в нити «основной» java.lang .ClassCastException: java.lang.String не может быть отнесено к java.util.Map $ Entry
Каков правильный способ сделать это?
Спасибо за ответы, но в это Java-документ, он говорит: «Карта сортируется в соответствии с естественным порядком его ключами, или компаратором, предоставленным на карту времени создания», так как поставить его Компаратор, сортирующий по его значениям?
Нет правильного способа сделать это. В Java нет структуры данных, которая поддерживает 'ConcurrentMap', а также сортирует по значению. –
Это не имеет никакого смысла ... как вы могли бы найти что-нибудь в skiplist по ключу, если оно не отсортировано по ключу? – Affe
«Компаратор» предназначен для ключей, а не для записей карты ... –