繁体   English   中英

将对象添加到LinkedList Java数组

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM