我有一项任务,目标是使用通用键和值创建HashTable实现。为了处理冲突,我们被告知使用单独的链接。因此,我尝试这样做:
public class HashTable<K, V> implements Table<K, V> {
private Node[] generics;
public class Node {
V value;
Node next;
public Node(V val) {
value = val;
}
}
public HashTable(int size) {
generics = (Node[]) new Object[size];
}
}
对于单独的链接,我想使用链表实现(还有其他方法),这就是为什么我需要generics
来容纳Node
的原因,而不仅仅是V
的原因。我不能只写generics = new Node[size];
的原因是Node类包含一个泛型,并且不允许创建泛型数组。对于此分配,此变通办法会产生“未经检查的演员表”警告,是可以接受的。
然后,在驱动程序中,它尝试Table<String, String> ht = new HashTable<String, String>(5);
并获取ClassCastException。对于上下文,当generics
为V[]
时,没有ClassCastException。
所以,我的问题是:如何创建一个自定义类数组,其中自定义类包含泛型(不更改驱动程序?)>
我有一项任务,目标是使用通用键和值创建HashTable实现。为了处理冲突,我们被告知使用单独的链接。因此,我尝试这样做:public ...
尝试以下解决方案
public class HashTable<K, V> {
private Node<V>[] generics;
static class Node<V> {
V value;
Node next;
public Node(V val) {
value = val;
}
}
private HashTable(int size) {
generics = (Node<V>[]) new Node[size];
}
}