HashMap

内在结构
数组和链表(红黑树1.8)

线程安全
不是线程安全的(对hashmap写入时分析)。

如何使其安全:
1.在外部包装HashMap,实现同步机制
2.使用Map m = Collections.synchronizedMap(new HashMap(…));,这里就是对HashMap做了一次包***r>3.使用java.util.HashTable,效率最低
4.使用java.util.concurrent.ConcurrentHashMap,相对安全,效率较高

jdk8与jdk7的不同

  1. hash冲突,也就是如果计算出来hash值相同的时候,我们不是放到一个链表里面吗?jdk7是在头部插入新的元素, jdk8是在尾部插入新来的元素。
  2. 第二点也就是最大的不同,jdk8的resize()操作比jdk7快了很多,并且jdk7 resize链表会倒过来,而jdk8不会。

hashmap的遍历方法:

  1. for(String key : map.keySet());
  2. for(Map.Entry<String, String> entry : map.entrySet())
    entry.getKey()/getValue();
  3. Iterator 遍历
全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务