1. Map
1.1 特点:无序、以键值对的形式添加元素,键不能重复,值可以重复
它没有继承Collection接口
1.2 遍历
1.2.1 先取出保存所有键的Set,再遍历Set即可(2种)
1.2.2 先取出保存所有Entry的Set,再遍历此Set即可 (重要点)
2.HashMap与HashTable之间的区别
同步既排队 线程安全的 hashtable 键不可以为null,值也不能为null
异步 非安全的 hashmap 键可以为null,值也可以为null
3. 其它
3.1 Collections:工具类,提供一组静态方法操作Collection集合
3.2 Arrays:工具类,提供了一组静态方法操作数组
典例:
map集合遍历的两种方式
1.用keySet()实现遍历map集合:
package com.zkin.ds;
import java.util.Collection;
import java.util.HashMap;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;
public class Dmoe01 {
public static void main(String[] args) {
Map<String ,Object>map=new HashMap<String ,Object>();
map.put("4", "d");
map.put("1", "a");
map.put("2", "b");
map.put("3", "c");
//map集合的遍历方式1.获取map集合的所有key来获取value
Set<String> keySet = map.keySet();
for (String key : keySet) {
System.out.println(key);
Object value = map.get(key);
System.out.println(key+"="+value);
}
map.put("3", "c1");
map.put("3", "a");
System.out.println("---------------------------------");
}
}
2.使用entrySet()方法遍历,map集合
package com.zkin.ds;
import java.util.Collection;
import java.util.HashMap;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;
public class Dmoe01 {
public static void main(String[] args) {
Map<String ,Object>map=new HashMap<String ,Object>();
map.put("4", "d");
map.put("1", "a");
map.put("2", "b");
map.put("3", "c");
//遍历map方法2
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());
}
// Collection<Object> values = map.values();
//
// for (Object object : values) {
// System.out.println(object);
// }
// for (String key : keySet) {
// System.out.println(key);
// Object value = map.get(key);
// System.out.println(key+"="+value);
//
// }
}
}
建议使用entrySet()方法
因为这里打印出来是比较方便的但是keySet()如果代码量大需要重新打印较为麻烦
案例:
Map集合3层嵌套使用(2Map+1List)
Map<String ,Map>map=new HashMap<String ,Map>();
Map<String ,List>map1=new HashMap<String ,List>();
List<Student> list= new ArrayList<Student>();
list.add(new Student(" 张晓东", 90));
list.add(new Student(" 张晓西", 75));
List<Student> list1= new ArrayList<Student>();
list1.add(new Student(" 张晓北", 80));
list1.add(new Student(" 张晓南", 82));
map1.put("T110", list);
map1.put("T111", list1);
map.put("卓京初中部", map1);
// List<Student>
// Map<String,List>
// Map<String,Map>
//
// 卓京高中部
// T206
// 张三 90
// 李四 100
// T222
// 王五 70
// 小六 100
// T208
// 小八 70
// 小九 100
Map<String ,List>map2=new HashMap<String ,List>();
List<Student> list3= new ArrayList<Student>();
list3.add(new Student(" 张三", 90));
list3.add(new Student(" 李四", 100));
List<Student> list4= new ArrayList<Student>();
list4.add(new Student(" 王五", 70));
list4.add(new Student(" 小六", 100));
List<Student> list5= new ArrayList<Student>();
list5.add(new Student(" 小八", 70));
list5.add(new Student(" 小九", 100));
map2.put("T206", list3);
map2.put("T222", list4);
map2.put("T208", list4);
map.put("卓京高中部", map2);
// 卓京大学部
// T230
// 可乐 60
// 雪碧 50
// T231
// 哇哈哈 90
// 老干妈 80
Map<String ,List>map3=new HashMap<String ,List>();
List<Student> list6= new ArrayList<Student>();
list6.add(new Student("可乐", 60));
list6.add(new Student(" 雪碧", 50));
List<Student> list7= new ArrayList<Student>();
list7.add(new Student(" 哈哈哈", 90));
list7.add(new Student(" 老干妈", 80));
map3.put("T230", list6);
map3.put("T231", list7);
map.put("卓京大学部", map3);
Set<String> keySet = map.keySet();
for (String key : keySet) {
System.out.println(key);
Object value = map.get(key);
System.out.println(key+"="+value);
}