【发布时间】:2011-12-24 01:33:04
【问题描述】:
可能重复:
Java how to: Generic Array creation
Error generic array creation
我的任务是用 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 中?
【问题讨论】:
-
认为类型擦除是实现泛型的好方法的另一个原因应该被枪杀。
-
如果这是家庭作业,请注明。
-
@DavidZaslavsky,看来我们已经决定使用您发布链接的问题中提出的解决方案,使用 ArrayList 作为集合。非常感谢,我需要提高我的搜索技能。
-
我无法相信这不是家庭作业。
标签: java arrays generics linked-list hashtable