Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/384.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java集合中未排序的Null键_Java_Sortedset_Sortedmap - Fatal编程技术网

Java集合中未排序的Null键

Java集合中未排序的Null键,java,sortedset,sortedmap,Java,Sortedset,Sortedmap,请有人给我解释一下: 我很清楚为什么在Java排序的集合中禁止空键值 但是为什么HashTable、ConcurrentHashMap和。。。性质 它是否与线程安全有关 CopyOnWriteArrayList中是否允许/禁止空值?为什么? 多谢各位 但为什么哈希表中不允许它们呢 从: 要从哈希表中成功存储和检索对象 用作键的对象必须实现hashCode方法和equals方法 空引用对象的属性不可能获取该信息,因为该属性为空 CopyOnWriteArrayList中是否允许/禁止空值 从 ja

请有人给我解释一下:

我很清楚为什么在Java排序的集合中禁止空键值 但是为什么HashTable、ConcurrentHashMap和。。。性质

它是否与线程安全有关

CopyOnWriteArrayList中是否允许/禁止空值?为什么?

多谢各位

但为什么哈希表中不允许它们呢

从:

要从哈希表中成功存储和检索对象 用作键的对象必须实现hashCode方法和equals方法

空引用对象的属性不可能获取该信息,因为该属性为空

CopyOnWriteArrayList中是否允许/禁止空值

java.util.ArrayList的线程安全变体,其中所有 通过创建新的 基础数组的副本

。。。。

迭代器本身的元素更改操作将被删除, 不支持设置、添加和添加。这些方法会导致 不支持操作异常

允许所有元素,包括null


有时它有助于阅读文档:

这里有两个问题。这两个问题都可以通过阅读文档来回答

1-为什么哈希表、ConcurrentHashMap和属性不能接收null作为键

哈希表:

要成功地从哈希表存储和检索对象,用作键的对象必须实现hashCode方法和equals方法

ConcurrentHashMap:

相反,由于映射中的键和值从不为null,因此null可作为当前缺少任何结果的可靠原子指示器

Properties类扩展了HashTable,因此您已经知道了原因

2-CopyOnWriteArrayList中是否允许/禁止空值?为什么?

允许所有元素,包括null


对此原因没有进一步解释,但我相信这是一个设计决定。

因为值的存在与键的存在有关,否则,就没有必要使用HashMap的概念!这些文档直接回答了您的最后一个问题。一个重要原因是Java开发人员开始认为null在集合中是个坏主意:
public class CopyOnWriteArrayList<E>