LinkedList 作为 Hashtable 的值
LinkedList as value for Hashtable
我已经创建了一个哈希表,其中一个字符串作为键,一个字符串的链表作为我的值。这是我的实现:
Hashtable <String, LinkedList<String>> table = new Hashtable <String, LinkedList<String>>();
我想做的是对单词文件进行排序,并将每个排序后的单词存储到哈希表(代表键)中,并将原始单词存储为我的 LinkedList 值的一部分。
例如,如果单词是
"cat"
Sorted = "act"
Store in Hashtable (key : act, value : cat);
现在我只是对如何从根本上添加到我的 LinkedList 感到困惑。
这就是我的想法:
LinkedList <String> temp = table.get(sortedWord) //if null, then nothing in list
if(temp==null)
table.put(sortedWord,temp.add(originalWord));
This is not working since its not following the library functions but I'm unsure of how I would do this.
这是我的解决方案。解决方案是遍历单词,用 Array.sort()
对字符进行排序。检查 Hashtable 是否填充了排序后的单词,然后从那里创建 LinkedList
并将元素添加或添加到已创建的 LinkedList 中。不确定为什么选择 LinkedList
作为数据结构。
Hashtable <String, LinkedList<String>> table = new Hashtable <String, LinkedList<String>>();
for(String s : new String[]{"cat","dog","mouse", "cat"})
{
char[] chars = s.toCharArray();
Arrays.sort(chars);
String sorted = new String(chars);
if(table.containsKey(sorted))
{
LinkedList<String> list = table.get(sorted);
list.add(s);
}
else
{
LinkedList<String> list = new LinkedList<String>();
list.add(s);
table.put(sorted, list);
}
}
这将产生以下哈希表。
{act=[cat, cat], emosu=[mouse], dgo=[dog]}
将此问题用于对字符进行排序。
Sort a single String in Java
你可以这样做:
if(!table.containsKey(sorted)) {
table.put(new LinkedList<String>())
}
table.get(sorted).add(...)
这段代码的问题:
LinkedList <String> temp = table.get(sortedWord) //if null, then nothing in list
if(temp==null)
table.put(sortedWord,temp.add(originalWord));
是,如果temp
是null
,那意味着你没有一个LinkedList
,但是你的语句试图将originalWord
添加到一个LinkedList
不存在。如果temp
是null
,那么temp.add
一定会得到NullPointerException
.
使用 temp.add
如果您 做 有一个 LinkedList
(并且您不需要另一个 table.put
当这种情况发生时)。如果没有,则必须使用一个元素创建一个新的 LinkedList
。这是一种方法:
if (temp == null) {
LinkedList<String> newList = new LinkedList<>(Arrays.asList(originalword));
table.put(sortedWord, newList);
} else {
// you have a LinkedList, add the word to it
(Arrays.asList
似乎是创建仅包含一个元素的列表的最简单方法。但它不会是 LinkedList
,因此您需要额外的构造函数调用来创建LinkedList
.)
我已经创建了一个哈希表,其中一个字符串作为键,一个字符串的链表作为我的值。这是我的实现:
Hashtable <String, LinkedList<String>> table = new Hashtable <String, LinkedList<String>>();
我想做的是对单词文件进行排序,并将每个排序后的单词存储到哈希表(代表键)中,并将原始单词存储为我的 LinkedList 值的一部分。
例如,如果单词是
"cat"
Sorted = "act"
Store in Hashtable (key : act, value : cat);
现在我只是对如何从根本上添加到我的 LinkedList 感到困惑。
这就是我的想法:
LinkedList <String> temp = table.get(sortedWord) //if null, then nothing in list
if(temp==null)
table.put(sortedWord,temp.add(originalWord));
This is not working since its not following the library functions but I'm unsure of how I would do this.
这是我的解决方案。解决方案是遍历单词,用 Array.sort()
对字符进行排序。检查 Hashtable 是否填充了排序后的单词,然后从那里创建 LinkedList
并将元素添加或添加到已创建的 LinkedList 中。不确定为什么选择 LinkedList
作为数据结构。
Hashtable <String, LinkedList<String>> table = new Hashtable <String, LinkedList<String>>();
for(String s : new String[]{"cat","dog","mouse", "cat"})
{
char[] chars = s.toCharArray();
Arrays.sort(chars);
String sorted = new String(chars);
if(table.containsKey(sorted))
{
LinkedList<String> list = table.get(sorted);
list.add(s);
}
else
{
LinkedList<String> list = new LinkedList<String>();
list.add(s);
table.put(sorted, list);
}
}
这将产生以下哈希表。
{act=[cat, cat], emosu=[mouse], dgo=[dog]}
将此问题用于对字符进行排序。
Sort a single String in Java
你可以这样做:
if(!table.containsKey(sorted)) {
table.put(new LinkedList<String>())
}
table.get(sorted).add(...)
这段代码的问题:
LinkedList <String> temp = table.get(sortedWord) //if null, then nothing in list
if(temp==null)
table.put(sortedWord,temp.add(originalWord));
是,如果temp
是null
,那意味着你没有一个LinkedList
,但是你的语句试图将originalWord
添加到一个LinkedList
不存在。如果temp
是null
,那么temp.add
一定会得到NullPointerException
.
使用 temp.add
如果您 做 有一个 LinkedList
(并且您不需要另一个 table.put
当这种情况发生时)。如果没有,则必须使用一个元素创建一个新的 LinkedList
。这是一种方法:
if (temp == null) {
LinkedList<String> newList = new LinkedList<>(Arrays.asList(originalword));
table.put(sortedWord, newList);
} else {
// you have a LinkedList, add the word to it
(Arrays.asList
似乎是创建仅包含一个元素的列表的最简单方法。但它不会是 LinkedList
,因此您需要额外的构造函数调用来创建LinkedList
.)