gpt4 book ai didi

java - 如何使用 HashMap 解读单词列表?

转载 作者:行者123 更新时间:2023-11-30 10:37:54 25 4
gpt4 key购买 nike

我将获得两个文件,我需要将其读入我的程序。一个文件将是真实单词的列表,而另一个文件将是这些相同单词的乱序列表。我需要按字母顺序输出乱序的单词,并在旁边打印真实的单词,我需要使用 Hashmap 来完成此操作。我的问题是我可以打印出乱序词和旁边的 1 个真实词,但在某些情况下,每个困惑词可能有不止一个真实词。

例如,我的程序可以这样做:

邮寄

但我需要它才能做到这一点:

stpo 后停止

我需要对我的代码进行哪些更改才能使每个乱序单词具有多个词典单词?感谢您的帮助。我的代码如下:

import java.io.*;
import java.util.*;

public class Project5
{
public static void main (String[] args) throws Exception
{

BufferedReader dictionaryList = new BufferedReader( new FileReader( args[0] ) );
BufferedReader scrambleList = new BufferedReader( new FileReader( args[1] ) );

HashMap<String, String> dWordMap = new HashMap<String, String>();

while (dictionaryList.ready())
{
String word = dictionaryList.readLine();
dWordMap.put(createKey(word), word);
}
dictionaryList.close();

ArrayList<String> scrambledList = new ArrayList<String>();

while (scrambleList.ready())
{
String scrambledWord = scrambleList.readLine();

scrambledList.add(scrambledWord);
}
scrambleList.close();

Collections.sort(scrambledList);

for (String words : scrambledList)
{
String dictionaryWord = dWordMap.get(createKey(words));
System.out.println(words + " " + dictionaryWord);
}

}

private static String createKey(String word)
{
char[] characterWord = word.toCharArray();
Arrays.sort(characterWord);
return new String(characterWord);
}
}

最佳答案

您需要做几处更改。最大的一个是 dWordMap 不能只保存一个 String - 它需要保存在乱序词文件中找到的单词列表。

下一个变化是能够操纵该列表。我添加了一个未经测试的示例解决方案,但应该可以为您提供一个良好的起点。

import java.io.BufferedReader;
import java.io.FileReader;
import java.util.*;

public class Projects {
public static void main (String[] args) throws Exception
{
BufferedReader dictionaryList = new BufferedReader( new FileReader( args[0] ) );
BufferedReader scrambleList = new BufferedReader( new FileReader( args[1] ) );

Map<String, List<String>> dWordMap = new HashMap<>();

while (dictionaryList.ready()) {
String word = dictionaryList.readLine();
dWordMap.put(createKey(word), new ArrayList<>());
}

dictionaryList.close();

while (scrambleList.ready()) {
String scrambledWord = scrambleList.readLine();
String key = createKey(scrambledWord);
List<String> list = dWordMap.get(key);
list.add(scrambledWord);
}

scrambleList.close();

for (Map.Entry<String, List<String>> entry : dWordMap.entrySet()) {
String word = entry.getKey();
List<String> words = entry.getValue();
Collections.sort(words);
System.out.println(concatList(words, " ") + " " + word );
}
}

private static String createKey(String word) {
char[] characterWord = word.toCharArray();
Arrays.sort(characterWord);
return new String(characterWord);
}

private static String concatList(List<String> list, String delimiter) {
StringJoiner joiner = new StringJoiner(delimiter);
list.forEach(joiner::add);
return joiner.toString();
}
}

我会做一些其他的改变 - 首先是将对 dictionaryList.close();scrambleList.close(); 的调用放在一个finallytry...catch 子句的一部分,以确保无论发生什么情况,资源最终都会被释放。您还可以考虑使用 Java 8 的 Streams使代码更新。如果这不符合您的需要或您有任何问题,我很乐意提供更多提示。祝你好运!

关于java - 如何使用 HashMap 解读单词列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39988169/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com