Map 储存键值对 键是名字,值是存储对象
key可以为空的但只能有一个为空
Map map=new HashMap();
//存储数据
map.put("A1","张三");
map.put(null,null);
map.put(2,null);
//可以直接打印出来
System.out.println(map);
//可以通过存入的key获取存入的对象
Object obj=map.get("A1");//获取A1对应的value值
System.out.println(obj);
//通过key删除键值对返回的是删除的value值找不到则返回null
Object rem_obj=map.remove("A2");
System.out.println("删除的value值:"+rem_obj);
//是否包含key,返回Boolean
map.containsKey("A1");
//是否包含value,返回Boolean
map.containsValue("张三");
//获取所有的key [A1, null, 2]
Setsetkey=map.keySet();
System.out.println(setkey);
//获取所有的key [张三, null, null]
Collectioncon=map.values();
System.out.println(con);
TreeMap
TreeMap的底层实现是TreeSet
HashMap的底层实现是HashSet
key因该是可比较的
key不能为null, key是唯一的
value值可以为null
Hashtable线程安全的集合
key和value都不可以为null
Hashtable ht=new Hashtable<>();
ht.put("t1","阿斯弗给");
System.out.println(ht);
//ConcurrentHashMap 线程安全效率高
ConcurrentHashMap chm;
//HashMap底层实现数组加链表
//数组的默认容量是16,
//每次扩容两倍向左移一位
//容量阈值达到容量的0.75就开始扩容
//一个链达到8就对该链进行树化
//一支树上的元素低于6个这个树就会退化成链
//最小树化容量阈值64
//如果数组的树化阈值没有达到64则优先树化
HashMaphmap=newHashMap();
hmap.put("a1","ahsfs");
线程安全的Map HashMap ConcurrentHashMap(性能优异,锁颗粒度比较小)