可能是重复问题:
Java如何:泛型数组创建
错误的泛型数组创建
我被要求用Java编写一个哈希表,它必须与任何数据类型一起使用。 我正在编写的代码规则如下: - 哈希表必须具有一个数组作为底层数据结构,其大小在对象构造时确定 - 当发生冲突时,应将发生冲突的元素放入链表中,该链表保存哈希表中该索引(键)处的所有元素
因此,对于底层数据类型,我已经制作了一个LinkedList类型的数组(自定义,而不是Java API LinkedList)。
private LinkedList<T>[] table;
问题在于实例化该数组。以下是我的一些尝试:
public HashTable(int size) {
table = new LinkedList<T>[size];
}
这会引发编译时的泛型数组创建错误。
public HashTable(int size) {
table = (LinkedList<T>[])(new Object[size]);
}
这会导致运行时出现ClassCastException
错误(java.lang.Object
无法转换为LinkedList
)。
负责该项目的人也不确定如何处理此问题。有没有办法修改我的代码,使哈希表仍然具有数组作为其基础数据结构,并将冲突放置在LinkedList中?