Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 哈希表数组的链接列表数组_Java_Arrays_Linked List_Hashtable - Fatal编程技术网

Java 哈希表数组的链接列表数组

Java 哈希表数组的链接列表数组,java,arrays,linked-list,hashtable,Java,Arrays,Linked List,Hashtable,因此,我创建了一个哈希表,它使用数组的链接列表数组。让我花点时间解释一下为什么会这样 所以我之前通过创建一个数组实现了哈希表,数组的每个元素都是一个链表。通过这种方式,我可以首先在数组中搜索哈希值,然后搜索这个LL的元素,从而快速查找包含450000个元素的LL。我应该补充一点,这是一个学校项目,我不能只使用java附带的哈希表 现在我想做一些类似的事情。。。但是我有很多数组需要搜索。在这里,LL的每个元素都是文本文件的一行,由4个元素的数组表示,其中4个元素中的每个元素都是输入文件中以制表符分

因此,我创建了一个哈希表,它使用数组的链接列表数组。让我花点时间解释一下为什么会这样

所以我之前通过创建一个数组实现了哈希表,数组的每个元素都是一个链表。通过这种方式,我可以首先在数组中搜索哈希值,然后搜索这个LL的元素,从而快速查找包含450000个元素的LL。我应该补充一点,这是一个学校项目,我不能只使用java附带的哈希表

现在我想做一些类似的事情。。。但是我有很多数组需要搜索。在这里,LL的每个元素都是文本文件的一行,由4个元素的数组表示,其中4个元素中的每个元素都是输入文件中以制表符分隔的不同字符串。我需要能够快速访问每行中的第2、第3和第4个字符串,它现在是这个数组的一个元素

所以我想要的是能够创建一个由LL个数组组成的数组。。。首先,我将找到数组第二个元素的ascii值之和。然后我将使用这个值将整个数组散列到by哈希表中。然后,当我以后需要找到这个元素时,我将转到数组的相应元素,在那里我有一个数组列表。我将搜索列表中每个数组的第二个值。如果我找到了我想要的,那么我返回该数组,并使用该数组的第3和第4个元素

正如我所说的,对于LL数组,我可以很好地使用它,但是在其中添加数组的额外维度让我完全失去了兴趣。我认为这主要是为了弄清楚语法,因为我已经成功地初始化了一个数组LL of Arrays(public static LinkedList[]RdHashLL),所以Java基本上可以接受这一点。但是,我不知道如何将元素放入哈希表,以及如何读取它们

下面是我编写的一系列链表的代码,这些链表运行良好。我只是需要帮助让它为一个数组的LL数组工作

public class TableOfHash{

public static LinkedList<String>[] HashLL;

//HASH FUNCTION - Finds sum of ascii values for string
public static int charSum(String s){
    int hashVal = 0;
    int size = 1019; //Prime Number around size of 8 char of 'z', (8 chars is amoung largest consistantly in dictionary)

    for(int i = 0; i < s.length(); i++){
        hashVal += s.charAt(i);
    }   
    return hashVal % size;
}

//CREATE EMPTY HASH TABLE - Creates an array of LL
public static void makeHash(){
    HashLL = new LinkedList[1019];
    for(int i=0; i<HashLL.length; i++){
        HashLL[i] = new LinkedList<String>();
    }
}

//HASH VALUES INTO TABLE!
public static void dictionary2Hash(LinkedList<String> Dict){
    for(String s : Dict){
        HashLL[charSum(s)].add(s);
        //Finds sum of char vales of dictionary element i,
        //and then word at i to the HashLL at point defined
        //by the char sum.
    }   
    //Print out part of Hash Table (for testing! for SCIENCE!)
    //System.out.println("HASH TABLE::");
    //printHashTab();
}

//SEARCH HashTable for input word, return true if found
public boolean isWord(String s){

    if(HashLL[charSum(s)].contains(s)){
        wordsfound++;
        return true;
    }
    return false;
}
public-class-tableof-hash{
公共静态链接列表[]HashLL;
//哈希函数-查找字符串的ascii值之和
公共静态int字符和(字符串s){
int hashVal=0;
int size=1019;//大约为“z”的8个字符大小的素数,(8个字符在字典中始终是最大的)
对于(int i=0;i
LinkedList<String[]>[] hashLL;
要写入字段,这是可能的(假设所有内容都已正确初始化)


你在找
LinkedList[]hashLL;
?你可以使用google guava库来创建这种数据结构,我可以将它初始化为公共静态LinkedList[]RdHashLL,但要让它在功能上工作,添加值和搜索值,我无法工作。谢谢!这很有效(对我需要做的做了一些小改动)。非常感谢!
String str = hashLL[outerArrayIndex].get(listIndex)[innerArrayIndex];
String[] arr = hashLL[outerArrayIndex].get(listIndex);
arr[index] = "value";