为什么Java中的ArrayList可以哈希,而Python中的List却不行。这只是开发人员或语言语义选择的结果。
我认为Python不允许List可哈希化是因为它是可变的,因此哈希值可能会随着对象生命周期的改变而改变。
这是一个好的特性还是坏的特性?为什么Java允许它呢?
我认为Python不允许List可哈希化是因为它是可变的,因此哈希值可能会随着对象生命周期的改变而改变。
这是一个好的特性还是坏的特性?为什么Java允许它呢?
public class Test {
public static void main(String[] args) {
ArrayList<String> list = new ArrayList<String>();
list.add("hello");
System.out.println(list.hashCode());
}
}
下面的代码不起作用,而上面的可以正常工作。
>>> l = ["hello"]
>>> l.__hash__()
Traceback (most recent call last):
File "<pyshell#103>", line 1, in <module>
l.__hash__()
TypeError: 'NoneType' object is not callable