[英]Adding object to array of LinkedList java
所以我正在使用哈希,并希望创建一个LinkedList数组。 如何使用表[索引]将新对象添加到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);
这就是我所谓的函数。
数组不能具有参数化类型的组件类型,否则我应该说它没有用。 基本上由于类型擦除,数组的类型未知,这将导致数组存储检查失败。
LinkedList<String>[] table
引起了您的问题。 传递给方法的参数不能为LinkedList<String>[]
类型,因为无法在Java中实例化此类。
在您的IDE中尝试以下行,该行不会编译:
LinkedList<String>[] list = new LinkedList<String>[];
尝试使用:
List<LinkedList<String>>
而不是LinkedList<String>[]
参见通用常见问题解答
我不得不存根一堆方法,但这是一个有效的示例:
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;
}
}
}
你真的做不到
int hashKey=hashFunction(temp);
....
table[hashKey].add(obj);
假设hashKey
值可以是MIN到MAX整数值。 您只能访问值为0至array.length
的数组元素。 你有什么例外?
但是我认为主要的问题是您试图将Anagram
类型添加到需要String
的LinkedList中。
您绝对需要确保您尝试访问的任何索引处都有一个LinkedList实例。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.