HashTable
HashTable与HashMap区别
HashTable key不能为null,不能存储null值,
HashTable 线程不安全,
剩下的与HashMap一致
HashMap
HashMap中维护了一个Hash表,如果有Hash冲突那么使用链表连接冲突结点,这里需要复写存储的对象的hashCode()和equals()方法,在存入Hash表中的时候会先计算key的hash值,如果hash值有冲突会用equals去比较值是否相同,如果值也相同那么就写到一个列表中,Java8之后链表中如果链表超过一定长度链表变成红黑树提高查找效率
HashMap key可以为null,可以存储null值,线程不安全
LinkedHashMap
与HashMap相同,区别是维护了一个链表用来保证存储数据的顺序,可按存储数据顺序取出
TreeMap
底层维护了红黑树,保证了存储的顺序性,所以存储的key需要复写equals方法
网友评论