一、Map的特点
二、Map的遍历方式
三、HashMap与HashTable之间的区别
四、Map三层嵌套(2)Map 1List)小案例
一、Map的特点
以键值对的形式添加元素,键不能重复,值可以重复。
二、Map的遍历方式
1、获取map集合中所有key的set集合,再通过key获取值value
Map<String, Object> map = new HashMap<String, Object>(); map.put("艾斯", "撒旦"); map.put("全文", "从v"); map.put("这些", "体育件"); map.put("二方", "体育"); //map集合的遍历 1.获取map集合中所有key的set集合,再通过key获取值value Set<String> keySet = map.keySet(); for (String key : keySet) { ////通过键获得相应的值 Object value = map.get(key); System.out.println(key "=" value); }2.首先取出保存的所有键值(Entry)的Set,再遍历此Set即可 (重要点)
Map<String, Object> map = new HashMap<String, Object>(); map.put("艾斯", "撒旦"); map.put("全文", "从v"); map.put("这些", "体育件"); map.put("二方", "体育"); //map2.首先取出并保存所有键值(Entry)的Set,再遍历此Set即可 (重要点) Set<Entry<String, Object>> entrySet = map.entrySet(); for (Entry<String, Object> entry : entrySet) { System.out.println(entry); System.out.println(entry.getKey()); System.out.println(entry.getValue()); }
三、HashMap与HashTable之间的区别
1、HashTable
同步既排队 ,线程安全
键不可以为null,值也不能为null
2、HashMap
异步,线程不安全
键可以为null,值也可以为null
四、Map三层嵌套(2)Map 1List)小案例
1、Student.java
public class Student implements Serializable{ /** * */ private static final long serialVersionUID = 4682477983251791848L; private String name; private Integer source; public String getName() { return name; } public void setName(String name) { this.name = name; } public Integer getSource() { return source; } public void setSource(Integer source) { this.source = source; } public Student() { // TODO Auto-generated constructor stub } @Override public String toString() { return "Student [name=" name ", source=" source "]"; } public Student(String name, Integer source) { super(); this.name = name; this.source = source; } }2、
public static void main(String[] args) { Map<String, Map<String,List<Student>>> map = new HashMap<String, Map<String,List<Student>>>(); //==================================================================== List<Student> als = new ArrayList<Student>(); als.add(new Student("张晓东",90)); als.add(new Student("张晓西",75)); List<Student> bls = new ArrayList<Student>(); bls.add(new Student("张晓北",80)); bls.add(new Student("张晓南",82)); Map<String, List<Student>> amap = new HashMap<String, List<Student>>(); amap.put("T110", als); amap.put("T111", bls); //==================================================================== List<Student> cls = new ArrayList<Student>(); cls.add(new Student("张三",90)); cls.add(new Student("李四",100)); List<Student> dls = new ArrayList<Student>(); dls.add(new Student("王五",70)); dls.add(new Student("小六",100)); List<Student> els = new ArrayList<Student>(); els.add(new Student("小八",70)); els.add(new Student("小九",100)); Map<String, List<Student>> bmap = new HashMap<String, List<Student>>(); bmap.put("T206", cls); bmap.put("T222", dls); bmap.put("T208", els); //=================================================================== List<Student> fls = new ArrayList<Student>(); fls.add(new Student("可乐",60)); fls.add(new Student("雪碧",50)); List<Student> gls = new ArrayList<Student>(); gls.add(new Student("哇哈哈",90)); gls.add(new Student("老干妈",80)); Map<String, List<Student>> cmap = new HashMap<String, List<Student>>(); cmap.put("T230", fls); cmap.put("T231", gls); map.put("卓京初中部",amap); map.put("卓京高中部",bmap); map.put("卓京大学部",cmap); Set<String> keySet = map.keySet(); for (String key : keySet) { Map<String, List<Student>> value = map.get(key); System.out.println(key); Set<String> keySet2 = value.keySet(); for (String key2 : keySet2) { System.out.println("\t"+key2); List<Student> ls = value.get(key2); for (Student stu : ls) { System.out.println("\t\t"+stu.getName()+" "+stu.getSource()); } } } }3、运行效果:
卓京高中部 T208 小八 70 小九 100 T206 张三 90 李四 100 T222 王五 70 小六 100 卓京大学部 T231 哇哈哈 90 老干妈 80 T230 可乐 60 雪碧 50 卓京初中部 T110 张晓东 90 张晓西 75 T111 张晓北 80 张晓南 82