Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/398.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java排序和HashMap_Java_Sorting_Data Structures_Hashmap - Fatal编程技术网

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);