zoukankan      html  css  js  c++  java
  • list,map的疑问

      代码:

    package com.wyl;
    
    import java.util.ArrayList;
    import java.util.HashMap;
    import java.util.Iterator;
    import java.util.List;
    import java.util.Map;
    
    public class aaa {
    	public static void main(String[] args) {
    		// location 1
    		List<Map<String,Object>> list = new ArrayList<Map<String,Object>>();
    		Map<String,Object> map = new HashMap<String,Object>();
    		String a = "23";
    		System.out.println(a);
    		for(int i=0;i<10;i++){
    			//location 2
    //			Map<String,Object> map = new HashMap<String,Object>();
    			map.put("age", "xiaoming:"+i);
    			System.out.println("=========:"+i);
    			list.add(map);
    		}
    		Iterator it = list.iterator();
    		while(it.hasNext()){
    			Map m = (Map)it.next();
    			String age =  (String) m.get("age");
    			System.out.println("age:"+age);
    		}
    	}
    }
    

      分别在location1和location2出实例化出map,打印出来的数值就是不一样。

    问题应该处在list上:

    下面是一个list的Demo:

    package com.wyl;
    
    import java.util.ArrayList;
    import java.util.HashMap;
    import java.util.Iterator;
    import java.util.List;
    import java.util.Map;
    
    public class listDemo {
    	public static void main(String[] args) {
    		List list = new ArrayList<String>();
    		Map map = new HashMap<String, Object>();
    		map.put("age", 234);
    		map.put("name", "小明");
    		list.add(map);
    		Iterator it2 = list.iterator();
    		while(it2.hasNext()){
    			System.out.println("the first:"+it2.next());
    		}
    		System.out.println("======================"+list.size());
    		map.put("we", "wyl");
    		list.add(map);
    		System.out.println("list.size:"+list.size());
    		Iterator it = list.iterator();
    		while(it.hasNext()){
    			System.out.println("the next:"+it.next());//诡异的的事情发生了
    		}
    		System.out.println(map.size());
    	}
    }
    

      打印结果:

    the first:{name=小明, age=234}
    ======================1
    list.size:2
    the next:{name=小明, age=234, we=wyl}
    the next:{name=小明, age=234, we=wyl}
    3
    

      自己多试了几遍,应该跟Java的值传递相关的基础知识有关,下面是listDemo02:

    package com.wyl;
    
    import java.util.ArrayList;
    import java.util.HashMap;
    import java.util.Iterator;
    import java.util.List;
    import java.util.Map;
    
    public class listDemo2 {
    	public static void main(String[] args) {
    		Map<String,Object> map = new HashMap<String,Object>();
    		List<Map<String,Object>> list = new ArrayList<Map<String,Object>>();
    		map.put("name", "夏末");
    		map.put("age", 26);
    		list.add(map);
    		Iterator it = list.iterator();
    		while(it.hasNext()){
    			System.out.println("the first:"+it.next()+"====");//诡异的的事情发生了
    		}
    		map.put("age", 30);//修改年岁
    		Iterator it2 = list.iterator();//迭代出list的内容
    		if(it2.hasNext()){
    			System.out.println("the next :"+it2.next());//这个跟Java的值传递有关
    			System.out.println("list的size():"+list.size());
    		}else{
    			System.out.println("==========");
    		}
    		
    		
    		
    	}
    }
    

      打印结果:

    the first:{age=26, name=夏末}====
    the next :{age=30, name=夏末}
    list的size():1
    

      

  • 相关阅读:
    linksys wrt160nv3 刷dd-wrt固件
    win2008 r2 远程桌面问题
    windows server 2008 集成raid卡驱动
    gitlab-ce
    git
    批量发布jar包springboot应用
    gradle
    lvs
    rsyslog
    特殊权限
  • 原文地址:https://www.cnblogs.com/Sunnor/p/4712494.html
Copyright © 2011-2022 走看看