У меня есть задание, цель которого - создать реализацию HashTable с общими ключами и значениями c. Для обработки столкновений нам сказали использовать отдельную цепочку. Итак, я попытался сделать это:
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 содержит generi c, и создание массива generi c не допускается. Для этого назначения приемлем обходной путь, который выдает предупреждение «unchecked cast».
Затем в драйвере он пытается Table<String, String> ht = new HashTable<String, String>(5);
и получает ClassCastException. Не было ClassCastException, когда generics
было V[]
для контекста.
Итак, мой вопрос: как мне создать собственный массив классов, где пользовательский класс содержит обобщенные типы (без изменения драйвера)