Java排序和HashMap
我有一个Java排序和HashMap,java,sorting,data-structures,hashmap,Java,Sorting,Data Structures,Hashmap,我有一个HashMap如何对这个数据结构进行排序并保留键值映射?我想按值而不是键排序 Collection<Integer> counts = tableFrequency.values(); Collection counts=tableFrequency.values(); 但是我丢失了密钥映射。或者有没有更好的关联数据结构,我可以用它来代替HashMap?要按值对映射进行排序,您可以获取它的值,并使用自定义值对其进行排序 List sorted=newarraylist(m
HashMap
如何对这个数据结构进行排序并保留键值映射?我想按值而不是键排序
Collection<Integer> counts = tableFrequency.values();
Collection counts=tableFrequency.values();
但是我丢失了密钥映射。或者有没有更好的关联数据结构,我可以用它来代替HashMap?要按值对
映射进行排序,您可以获取它的值,并使用自定义值对其进行排序
List sorted=newarraylist(map.entrySet());
Collections.sort(已排序,新的Comparator(){
公共整数比较(条目o1、条目o2){
返回o1.getValue().compareTo(o2.getValue());
}
};
TreeMap按照您添加元素的顺序保存元素。这似乎是一个完美的答案
但是要小心,有些操作会比使用HashMap慢很多,例如搜索…类树映射
就是您想要的:
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()方法对元素进行排序
因为你的新问题是关于按值排序,这是一个重复的不,它不是,TreeMap
会在你添加元素时对元素进行排序。我想按值排序,而不是按键排序。它似乎对我的键进行了排序,我希望它按值排序,为什么是向下投票?原始帖子没有包含任何按值排序的概念……我想按值而不是键排序。这将如何工作?您知道我可以使用什么数据结构按值排序吗?条目在哪个库中定义?@CodeKingPlusPlus看起来像是静态导入了Map.Entry。@CodeKingPlusPlus它是java.util.Map
的嵌套类。可能是
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);