所以我正在使用散列并想要创建一个LinkedList数组。如何使用表[index]将新对象添加到LinkedList。这是我到目前为止,但当我尝试调用LinkedList方法添加它不起作用。是因为事先将一切都设置为null吗?我需要手动添加所有内容吗?
private void populateLinkedList(LinkedList<String>[] table, ArrayList<String> dictionary){
for(String s:dictionary){
String temp=findHash(s);
System.out.print(temp + ": ");
int hashKey=hashFunction(temp);
Anagram obj=new Anagram(s, temp, hashKey);
table[hashKey].add(obj);
}
}
populateLinkedList(hashTable, dictionaryList);
这就是我调用函数的方式。
答案 0 :(得分:2)
数组不能具有参数化类型的组件类型,或者我应该说它没用。基本上由于类型擦除,数组的类型是未知的,这会导致数组存储检查失败。
LinkedList<String>[] table
导致您的问题。传递给方法的参数不能是LinkedList<String>[]
类型,因为它无法在Java中实例化这样的类型。
在IDE中尝试以下行,该行将无法编译:
LinkedList<String>[] list = new LinkedList<String>[];
尝试使用:
List<LinkedList<String>>
代替LinkedList<String>[]
请参阅Generic Faq
我必须存根一堆方法,但这是一个有效的例子:
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;
public class ArrayStoreCheck {
public static void main(String[] args) {
List<LinkedList<Anagram>> lists = new ArrayList<LinkedList<Anagram>>();
LinkedList<Anagram> anagrams = new LinkedList<Anagram>();
lists.add(anagrams);
List<String> dictionary = new ArrayList<String>();
dictionary.add("one");
dictionary.add("two");
populateLinkedList(lists, dictionary);
System.out.println(lists.get(0).get(0));
}
private static void populateLinkedList(List<LinkedList<Anagram>> table, List<String> dictionary){
for(String s:dictionary){
String temp=findHash(s);
int hashKey=hashFunction(temp);
Anagram obj=new Anagram(s, temp, hashKey);
table.get(hashKey).add(obj);
}
}
//Stub
private static String findHash(String s){
return "";
}
//Stub
private static int hashFunction(String s){
return 0;
}
//Stub
public static class Anagram{
private String s;
public Anagram(String s, String t, int key){
this.s = s;
}
@Override
public String toString() {
return s;
}
}
}
答案 1 :(得分:0)
你实在无法做到
int hashKey=hashFunction(temp);
....
table[hashKey].add(obj);
假设hashKey
值可以是MIN到MAX整数值。您只能访问值为0到array.length
的数组元素。你有什么例外?
但我认为主要问题是您正在尝试向LinkedList添加Anagram
类型,期望String
。
您肯定需要确保在您尝试访问的任何索引处都有LinkedList的实例。