Map的操作
4.Map的操作
public static void main(String[] args) { Map<String, String> parMap = new HashMap<String, String>(); parMap.put("yezi1", "111"); parMap.put("yezi2", "222"); parMap.put("yezi3", "333"); getUser(parMap); System.out.println(parMap.toString()); } private static void getUser(Map<String, String> params) { params.put("test", "1"); }
以上代码中parMap初始化三个key-value,然后去调getUser()方法,getUser()方法中又添加了个key-value,但没有return操作。
接下来打印该parMap,输出是什么呢,有“test-1”这个key-value吗?
输出结果:{yezi3=333, test=1, yezi1=111, yezi2=222}
总结:一个Map对象作为参数在另外的方法体里做了相关操作,那么无需return该操作后的Map对象,原方法里使用这个map已经是修改后的map,这个跟Map存储的堆栈有关系,虽然是在另外方法里做了修改,但操作的是同个堆栈存储,所以这里不需要return亦可。
1.扩展:
那么在其他集合对象里也适用吗,我们来试试List:
public static void main(String[] args) { List<String> parList = new ArrayList<String>(); parList.add("a"); parList.add("b"); parList.add("c"); getUser(parList); System.out.println(parList.toString()); } private static void getUser(List<String> params) { params.add("test"); }
输出结果:[a, b, c, test]
如此,在List也是适用的
在collection集合容器中都是适用的。。。
2.扩展:
DTO中适用吗,创建个User对象,先设置好User的属性,然后在另外个方法去修改它,而不返回这个对象,看输出什么?
public static void main(String[] args) { User user = new User(); user.setAge("30"); user.setName("yezi"); user.setSex("男"); setUser(user); System.out.println(user.toString()); } private static void setUser(User user) { user.setAge("29"); }
输出结果:User [name=yezi, age=29, sex=男]
在DTO中也是适用的。