本帖最后由 程金 于 2012-9-22 12:48 编辑
- import java.util.Map;
- import java.util.HashMap;
- import java.util.Iterator;
- import java.util.Set;
- class MapTest
- {
- public static void main(String[] args){
- Map<Integer, String> map = new HashMap<Integer, String>();
- method_3(map);
- }
- public static void method_3(Map<Integer, String> map) {
- map.put(13, "wangcai");
- map.put(12, "zhangsan");
- map.put(14, "wangwu");
- map.put(11, "zhaoliu");
-
- Set<Map.Entry<Integer, String>> entrySet = map.entrySet();
- for(Iterator<Map.Entry<Integer, String>> it = entrySet.iterator(); it.hasNext(); ){
- System.out.println(it.next().getKey()+"="+it.next().getValue());
- _______________________________________________________________
- / /错误在这里,输出的时候你用了两次it.next(),每调用一次next(),iterator都会向下遍历一位,你的写法相当于先调用it.next(),得到一个元素,输出这个元素的key的值,再调用it.next(),取得下一个元素,并getValue()取得值
- 你的代码应该改成这样
- Map.Entry<Integer, String> me=it.next();
- System.out.println(me.getKey()+"="+me.getValue());
- ___________________________________________
- }
- }
- }
复制代码 |