Java集合框架,它不允许null并允许并行访问

时间:2018-04-20 12:09:01

标签: java collections frameworks

Hashtable不允许将任何null作为键或值,并且Hashtable是遗留的,并且一次只能访问单个线程。

哪个集合类不允许任何null并允许并发访问?

在接受采访时会问这个问题,可能的答案是什么?

2 个答案:

答案 0 :(得分:0)

ConcurrentHashMap

你去。

对于HashTableConcurrentHashMap之间的差异,我建议您阅读ConcurrentHashMap and Hashtable in Java

答案 1 :(得分:0)

ConcurrentHashMap和Hashtable都不允许任何null键并允许并发访问。

    Java中的
  • ConcurrentHashMap 作为Java中的Hashtable的替代方案而引入,它是一个同步的集合 类(线程安全的)。 它提供了检索的完全并发性(如 get操作不需要锁定)和 高预期 更新的并发性
  • Hashtable类通常被认为是过时的。这是一个 线程安全的哈希映射,但不像ConcurrentHashMap,它的所有方法 简单地同步,这意味着在这张地图上的所有操作 阻止,甚至检索独立值

前: -

Map<Integer, String> ch = new ConcurrentHashMap<Integer, String>();
ch.put(1, "First");
ch.put(2, "Second");
ch.put(null, "value"); //throws java.lang.NullPointerException
ch.forEach((k,v) -> System.out.println("Key = "  + k + ", Value = " + v));

对于HashMap和ConcurrentHashMap之间的区别,请参考this。 来自Stack Overflow的有用帖子找到here