我有一个HashMap<String, Integer>
如何对这个数据结构进行排序并保留键值映射?我想按 VALUES 而不是键排序。
Collection<Integer> counts = tableFrequency.values();
但后来我失去了键映射。或者是否有更好的关联数据结构可以用来代替 HashMap?
我有一个HashMap<String, Integer>
如何对这个数据结构进行排序并保留键值映射?我想按 VALUES 而不是键排序。
Collection<Integer> counts = tableFrequency.values();
但后来我失去了键映射。或者是否有更好的关联数据结构可以用来代替 HashMap?
要Map
按其值对 a 进行排序,您可以获取它entrySet
并使用 custom对其进行排序Comparator
。
List<Entry<K,V>> sorted = new ArrayList<>(map.entrySet());
Collections.sort(sorted, new Comparator<Entry<K,V>>() {
public int compare(Entry<K,V> o1, Entry<K,V> o2) {
return o1.getValue().compareTo(o2.getValue());
}
};
TreeMap 按照您添加它们的顺序保持元素。这对你来说似乎是一个完美的答案。
但请注意,某些操作会比使用 HashMap 慢得多,例如搜索......
该课程TreeMap
是您想要的:
TreeMap treeMap = new TreeMap();
treeMap.put("One", new Integer(1));
treeMap.put("Two", new Integer(2));
Object obj = treeMap.get("Two");
System.out.println(obj);
它使用 compare() 方法来对元素进行排序。
由于您的新问题是关于按值排序,因此这是这篇文章的副本