HashMap<K,V>
将数据存储为条目数组。即
Entry<K,V>[] table
和Entry中的键和值的类型分别是K和V.
但是..
ArrayList<E>
将数据存储为对象数组。即。
Object[] elementData
所以想知道为什么ArrayList不使用E?
类型的数组答案 0 :(得分:4)
简短的回答:尝试自己实施,看看会发生什么。答案很长:因为Java使用类型擦除,并且您需要在运行时知道类型以便创建新数组,new E[size]
将无法编译,因此如果没有某种黑客攻击,它就无法做到这一点。但是,您不需要知道通用参数来创建新数组,因为它们已被删除,因此您无需在运行时了解它们。