Hashtable 1.0 map的古老实现类,线程安全,效率低,不可以存null的key和value
HashMap 1.2实现,线程不安全,效率高,可以存null的key和value,1.7之前使用数组+链表,1.8使用数组+链表+红黑树
LinkedHashMap 添加两个引用,类似双向链表,可以遍历时按添加元素遍历
TreeMap 可以按照key排序,实现排序遍历。底层使用红黑树
Propertier k-v都是String类型,常用来处理配置文件
Map
map中key是无序的、不可重复的,使用Set存储所有的key
map中value是无序的、可重复的,使用Collection存储所有的value
一个键值对k-v构成Entry对象
map中Entry是无序的,不可重复的,使用set存储所有Entry
jdk 1.8 时,hashmap中的数组是Node对象(继承Entry)
在首次put时候才创建长度16的数组
数组+链表+红黑树,当链表长度>8且当前数组长度>64将此索引位的所有数据使用红黑树存储(二叉排序树提高查询效率)
Map接口中方法
put
putAll
remove
clear
get
containsKey
containValue
size
isEmpty //判断的是Map维护的table集合的长度
equals
keyset
values
entryset
Properties
Properties properties=new Properties();
// 文件路径 resources/file/jdbc.propertoes
ClassPathResource classPathResource = new ClassPathResource("file/jdbc.propertoes");
BufferedInputStream resourceAsStream1 = (BufferedInputStream) classPathResource.getInputStream();
properties.load(resourceAsStream1);
System.out.println("properties = " + properties);