当前位置: 代码迷 >> Eclipse >> Map的取值有关问题
  详细解决方案

Map的取值有关问题

热度:77   发布时间:2016-04-23 01:31:21.0
Map的取值问题


Map map = new LinkedHashMap();

for (int i = 0; i < 10; i++) {

for (int j = 0; j < 10; j++) {

map.put(i, j);

}

}

// 打印Map集合的值
for (Object obj : map.keySet()) {
Integer key = (Integer) obj;
Integer values = (Integer) map.get(key);
System.out.println(key + " = " + values);
}


但是结果却是:
0 = 9
1 = 9
2 = 9
3 = 9
4 = 9
5 = 9
6 = 9
7 = 9
8 = 9
9 = 9

为什么不是:
0 = 0
0 = 1
...
9 = 8
9 = 9
有点想不明白??求指点。。
java

------解决方案--------------------
就应该是这样,Map<Key,Value> Key是不可以重复的,你那么塞,你们的循环最后都只剩下9
下面是其API解释
An object that maps keys to values. 
A map cannot contain duplicate keys;
each key can map to at most one value.
 
------解决方案--------------------
Map的结构是通过key去找value的,你的循环确实运行了100此,但是(0,1)会把(0,0)覆盖;(0,2)会把(0,1)覆盖.....(0,9)会把(0,8)覆盖,其他的以此类推,所以最后只有10个(key,value)对,而不是100
------解决方案--------------------
虽然Map是键值对,通常我都会拿来放更复杂的数据例如
<key,<key,value>> 或是 <key,ArrayList>
不知道LZ是不是想做成下面这样
{0,[0,1,2,3,4,5,6,7,8,9]}
{1,[0,1,2,3,4,5,6,7,8,9]}
但还是直接像上面说的用数组就可以
------解决方案--------------------
引用:
引用:
Map的结构是通过key去找value的,你的循环确实运行了100此,但是(0,1)会把(0,0)覆盖;(0,2)会把(0,1)覆盖.....(0,9)会把(0,8)覆盖,其他的以此类推,所以最后只有10个(key,value)对,而不是100

我如果要这样输出100条记录。。这个有木有神马好的解决方案。。


只能是Key不同了
 
map.put(i+ "" +j, j);                       


  相关解决方案