java - 将对象添加到 LinkedList java 数组

标签 java arrays hash linked-list populate

所以我正在使用散列并想要创建一个 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/

相关文章:

android - 如何在共享首选项中保存纬度和经度(位置)

c# - 如何将这个序列转换成这个散列?

java - 从 murmur3 Guava 中只获得正多头

java - WeakHashMap 是否在 full GC 期间被清除?

java - Spring Security 和 Synchronizer Token J2EE 模式,身份验证失败时出现问题

java - 为什么布局参数在 Android 编程中起作用?

arrays - 从另一个类读取数组

数组与标量中的python赋值

oracle - Oracle 上的 SHA-512

Java 堆空间错误,我无法在 Java 中处理大型 xlsx 文件