HashMap<K,V>
将数据存储为条目数组。即
Entry<K,V>[] table
Entry内的key和value的类型分别是K和V。
但是..
ArrayList<E>
将数据存储为对象数组。即
Object[] elementData
所以想知道为什么 ArrayList 不使用 E 类型的数组??
最佳答案
简短回答:尝试自己实现,看看会发生什么。长答案:因为Java使用类型删除,并且您需要在运行时知道类型才能创建新数组,所以 new E[size]
不会编译,所以它不能这无需某种黑客手段。但是,您不需要知道通用参数来创建新数组,因为它们会被删除,因此您不必在运行时知道它们。
关于java - HashMap 与 ArrayList 中类型参数的实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23184599/