所以我正在使用散列并想要创建一个 LinkedList 数组。如何使用 table[index] 将新对象添加到 LinkedList 中。这是我到目前为止所拥有的,但是当我尝试调用 LinkedList 方法 add 时它不起作用。是因为之前一切都设置为空吗?我需要手动添加所有内容吗?
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);
这就是我调用该函数的方式。
最佳答案
数组不能有参数化类型的组件类型,或者我应该说它没有用。基本上由于类型删除,数组的类型是未知的,这导致数组存储检查失败。
LinkedList<String>[] table
导致了你的问题。传递到该方法的参数不能是 LinkedList<String>[]
类型因为在 Java 中不可能实例化这样的类型。
在 IDE 中尝试以下行,但不会编译:
LinkedList<String>[] list = new LinkedList<String>[];
尝试使用:
List<LinkedList<String>>
而不是LinkedList<String>[]
请参阅Generic Faq
工作示例
我必须 stub 一些方法,但这是一个有效的示例:
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;
}
}
}
关于java - 将对象添加到 LinkedList java 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20251084/