如何通过它的索引获取TreeMap的密钥?

时间:2014-08-10 17:21:45

标签: java

所以我试图通过int索引获取TreeMap的密钥。

这是我的代码:

TreeMap<String, Integer> map = new TreeMap<String, Integer>(Collections.reverseOrder());
map.put("hi", 1);
map.put("hi2", 5);

System.out.println("Key: " + (String) map.keySet().toArray()[0] + "\nValue: " + map.get(0));

但是当我执行此操作时,我收到错误:

java.lang.Integer cannot be cast to java.lang.String

所以我试图获得密钥:&#34; hi2&#34;

2 个答案:

答案 0 :(得分:4)

问题是

"\nValue: " + map.get(0)

get的论据必须是String,而不是Integer 0。所以这样做:

String key = map.keySet().toArray()[0];
Integer value = map.get(key);
System.out.println("Key: " + key + "\nValue: " + value);

答案 1 :(得分:0)

在我看来,错误来自println声明的后半部分:

println(...map.get(0))

整数0与地图的类型冲突,其中键类型为String

[编辑]

  • 关于通过索引获取密钥的原始问题,我认为你做得正确:map.keySet().toArray()[0]
  • 对于抱怨map.get()中密钥类型冲突的错误,您可以更正参数类型,如@Tichodroma上面的回答所示。