TreeMap<Integer, String> map = new TreeMap<Integer, String>();
map.put(1, "example");
map.put(1, "example2");
map.put(1, "example3");
Iterator<Integer> itr = map.keySet().iterator();
while (itr.hasNext()) {
Object obj = itr.next();
System.out.println(map.get(obj));
}
它始终返回"example3"
。我可以知道为什么吗?为什么我无法检索所有值?
Treemap
中的键如何排序?键应该是0,1,2 ......
答案 0 :(得分:6)
因为通过将所有值映射到同一个键(1),您实际上会覆盖您的初始Entry
。 The Map javadoc说
如果地图以前包含此键的映射,则旧值将替换为指定值
答案 1 :(得分:3)
您为同一个键设置了不同的值。而不是
map.put(1, "example");
map.put(1, "example2");
map.put(1, "example3");
使用
map.put(1, "example");
map.put(2, "example2");
map.put(3, "example3");
答案 2 :(得分:2)
这是因为您要覆盖同一个键的值。如果您使用了三个不同的键,您将获得所有三个值。例如,尝试更改为:
map.out(1, "example");
map.out(2, "example2");
map.out(3, "example3");
答案 3 :(得分:2)
TreeMap<Integer, String> map = new TreeMap<Integer, String>();
map.put(1, "example"); /*FIXED*/
map.put(2, "example2"); /*FIXED*/
map.put(3, "example3"); /*FIXED*/
Iterator<Integer> itr = map.keySet().iterator();
while (itr.hasNext()) {
Object obj = itr.next();
System.out.println(map.get(obj));
}
答案 4 :(得分:1)
地图不能包含重复键,因此您将替换“示例”和“example2”键。你可以实现一个Multimap来解决这个问题。
答案 5 :(得分:1)