排序散列映射(decending)我要排序此HashMap
:我想在Java
HashMap<Integer,Integer> hp=new HashMap<Integer,Integer>();
TreeMap<Integer,Integer> stm = new TreeMap<Integer,Integer>();
stm.putAll(hp);
在值反向排序。
如果值相同,我将使用键作为下一个条件。 价值是相反的,但关键不是。
排序散列映射(decending)我要排序此HashMap
:我想在Java
HashMap<Integer,Integer> hp=new HashMap<Integer,Integer>();
TreeMap<Integer,Integer> stm = new TreeMap<Integer,Integer>();
stm.putAll(hp);
在值反向排序。
如果值相同,我将使用键作为下一个条件。 价值是相反的,但关键不是。
我们可以通过引用TreeMap的值排序来实现这种HashMap。 我试着写一个样本与你分享。
public class HashMapTest {
public static void main(String[] args) {
Map<String, String> map = new HashMap<String, String>();
map.put("c", "ccccc");
map.put("a", "aaaaa");
map.put("b", "bbbbb");
map.put("d", "ddddd");
List<Map.Entry<String,String>> list = new ArrayList<Map.Entry<String,String>>(map.entrySet());
Collections.sort(list,new Comparator<Map.Entry<String,String>>() {
//Ascending order
public int compare(Entry<String, String> o1,
Entry<String, String> o2) {
return o1.getValue().compareTo(o2.getValue());
}
});
for(Map.Entry<String,String> mapping:list){
System.out.println(mapping.getKey()+":"+mapping.getValue());
}
}
的resule是
一个:AAAAA
B:BBBBB
C:CCCCC
d:DDDDD
你为什么不拿到的entrySet从地图,并尝试通过使用创建比较根据您的需要进行分类。当它被分类时,只需创建一个新的地图实例,并将已排序的集合迭代到地图中。它有点昂贵,但你需要做什么。
如果您发现实施此问题的任何问题。告诉我,我会给你的代码。 :)
HashMap不支持排序,所以你不能排序哈希映射本身的条目。 – Korashen
您无法对HashMap进行排序,但有排序的地图。见https://stackoverflow.com/questions/2889777/difference-between-hashmap-linkedhashmap-and-treemap – Alexander
到目前为止,你有什么尝试? –