У меня есть такой вопрос, как запись названия. Я хочу знать почему?Почему Java не поддерживает сортировку по значению?
сцена, если у меня есть карта, ключ означает id, значение означает оценку.
так, во-первых, я хочу отсортировать карту по количеству баллов. Во-вторых, я хочу получить верхние n (может быть 10) элементов после сортировки.
Я нахожу способ реализовать то, что я думаю. но меня смущает почему карта не поддерживает сортировку по значению?
Когда я использую Java, я пишу этот код сортируется HashMap
:
public class SortedMapTest {
public static void main(String[] args) {
Map<Long, Double> scoreMap = new HashMap<>();
scoreMap.put(100L, 3.0);
scoreMap.put(22L, 2.4);
scoreMap.put(45L, 2.0);
Map<Long, Double> sortedMap = new TreeMap<>(new ValueCompare(scoreMap));
sortedMap.putAll(scoreMap);
System.out.println(sortedMap);
}
static final class ValueCompare implements Comparator<Long> {
private Map<Long, Double> map;
public ValueCompare(Map<Long, Double> map) {
this.map = map;
}
@Override
public int compare(Long o1, Long o2) {
Double d1 = map.get(o1);
Double d2 = map.get(o2);
return d2.compareTo(d1);
}
}
}
Вы забыли спросить. – Maroun
Каков ожидаемый результат? Каков фактический результат? – dcsohl
Вы сами разместили здесь код, который сортируется по значению; почему вы говорите, что Java не может сортировать по значению? –