Java排序的映射

Java Sorting Map of

本问题已经有最佳答案,请猛点这里访问。

因此,我希望能够通过比较CustomObject中的值,即通过object.getSomeValue()进行比较,将此映射排序为TreeMap或LinkedHashmap。

因此,具有最高值的对象显然将首先出现在LinkedHashmap中


你不能以合理的方式做到这一点,但如果你真的想要它,你可以做的是:

1
2
3
4
5
6
List<EntrySet<UUID, CustomObject>> list = new ArrayList<>(map.entrySet());
Collections.sort(list, (e1, e2) -> /*comparision here*/);
Map<UUID, CustomObject> sortedMap = new LinkedHashMap<>();
for(Entry<UUID, CustomObject> entry: list){
   sortedMap.put(entry.getKey(), entry.getValue());
}