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