为什么Java中的ArrayList和Python是不可用的。它只是基于开发人员的选择或语言语义。
我认为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发布于 2015-11-29 01:17:50
Python中的列表是不可理解的,因为Python不允许可变数据作为字典的键,这一点是正确的。
Java ArrayLists是可理解的,因为Java没有任何语言级对不可变性的支持,并且两个强制所有对象都是可访问的。散列是否“有用”取决于类的实现。
我认为“故事”很简单,Python对字典有语言级别的支持,并对此做出了一些设计决策,而Java则没有。
虽然Python是“弱类型的”关于“弱,”的定义,但是您不应该推断Python是编程语言的狂野西部,所有的东西都没有内置的安全性。这将是Perl或Javascript。
https://stackoverflow.com/questions/33978318
复制相似问题