我有HashMAp
items = new HashMap<String, String>();
items.put("A", "1");
items.put("B", "2");
items.put("C", "3");
Run Code Online (Sandbox Code Playgroud)
我需要每个最后一个.
"C", "3"
"B", "2"
"A", "1"
Run Code Online (Sandbox Code Playgroud)
您可以使用NavigableMap(TreeMap是a NavigableMap),这是一个SortedMap具有导航功能.
NavigableMap#descendingMap() 返回此映射中包含的映射的逆序视图(不是副本).
示例:
NavigableMap<String, String> items = new TreeMap<String, String>();
items.put("B", "2");
items.put("A", "1");
items.put("C", "3");
for (Map.Entry<String, String> e : items.entrySet()) {
System.out.println(e);
}
// gives
// A=1
// B=2
// C=3
for (Map.Entry<String, String> e : items.descendingMap().entrySet()) {
System.out.println(e);
}
// gives
// C=3
// B=2
// A=1
Run Code Online (Sandbox Code Playgroud)
注意:如果你关心你的钥匙的自然顺序,这个答案是有效的Map.如果您关心插入订单或访问顺序,请查看LinkedHashMap.
注2:在你的问题中,你用了一个HashMap.请注意,HashMap不保证其元素的任何订单.实际上,它甚至不能保证订单会随着时间的推移保持不变.见第一段HashMap的javadoc的进一步引用.
编辑:我自己和马修显然对你的问题的含义有不同的解释。您的意思是插入的顺序相反,还是键的顺序相反?
如果您指的是相反的键顺序,请按以下步骤操作:
使用有序 Map,例如 TreeMap,然后迭代 items.keySet()。
TreeMap 按键值的自然顺序排序,因此您需要将比较器传递给构造函数以按相反顺序对键进行排序:
Map<String, String> items = new TreeMap<String, String>(new Comparator<String>() {
public int compare(String a, String b) {
return b.compareTo(a);
}
});
items.put("A", "1");
items.put("B", "2");
items.put("C", "3");
for (String s: items.keySet()) {
System.out.println(s + " " + items.get(s));
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
13087 次 |
| 最近记录: |