Java中Map,List与Set的区别
2021-04-09 07:27
怎么让HashMap同步?
- synchronizeMap
- JAVA5以上
ConcurrentHashMap
是HashTable
的替代 (即线程安全的)
关于List<Map<String, Object>>理解
首先map
List集合中的对象是一个Map对象,而这个Map对象的键是String类型,值是Object类型
package com.test; import java.util.*; public class MyTest01 { public static void main(String[] args) { List> listMaps = new ArrayList >(); Map map1 = new HashMap (); map1.put("1", "a"); map1.put("2", "b"); map1.put("3", "c"); listMaps.add(map1); Map map2 = new HashMap (); map2.put("11", "aa"); map2.put("22", "bb"); map2.put("33", "cc"); listMaps.add(map2); for (Map map : listMaps) { for (String s : map.keySet()) { System.out.print(map.get(s) + " "); } } System.out.println(); System.out.println("========================"); for (int i = 0; i ) { Map map = listMaps.get(i); Iterator iterator = map.keySet().iterator(); while (iterator.hasNext()) { String string = (String) iterator.next(); System.out.println(map.get(string)); } } System.out.println("++++++++++++++++++++++++++++"); for (Map map : listMaps) { for (Map.Entry m : map.entrySet()) { System.out.print(m.getKey() + " "); System.out.println(m.getValue()); } } System.out.println("-----------------------------"); } }
List<Map<String, Object>>存放的对象问题
一、提出问题
代码一:
import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; public class Test { public static void main(String args[]) { List> list = new ArrayList >(); Map map = new HashMap (); for(int i=0;i5;i++) { // Map map = new HashMap map.put("a", i); map.put("b", i); list.add(map); } System.out.println(list); } }();
代码二:
import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; public class Test { public static void main(String args[]) { List> list = new ArrayList >(); // Map map = new HashMap for(int i=0;i5;i++) { Map(); map = new HashMap (); map.put("a", i); map.put("b", i); list.add(map); } System.out.println(list); } }
二、给出答案
猜猜看代码一二运行的结果分别是啥?
没错,就是:
代码一:
[{a=4,b=4},{a=4,b=4},{a=4,b=4},{a=4,b=4},{a=4,b=4}]
代码二:
[{a=0,b=0},{a=1,b=1},{a=2,b=2},{a=3,b=3},{a=4,b=4}]
三、问题分析
代码一中,List
代码二中,每次循环的时候都实例化一个新的map对象,这样list在执行add方法的时候,每次都是存的不一样的map对象。
可以通过debug来观察list存放的map对象对应的id。如图:
代码一:
代码二:
四、总结
通过上面的分析,我们可以知道,以后需要创建不同的map对象的时候,需要在循环里面进行map的创建。
而不是在循环体外面,因为List
文章标题:Java中Map,List与Set的区别
文章链接:http://soscw.com/index.php/essay/73240.html