因此,对于我的编程类,我提交了一个AI程序,该程序根据从示例字符串中获取的统计信息生成单词。但是,以下几行代码极大地减慢了程序的速度:
//Opens and reads the Dictionary
Scanner inputFile = new Scanner(new File("common_words.txt"));
while (inputFile.hasNext()) {
wordCheck = inputFile.nextLine();
if (wordCheck.equalsIgnoreCase(aiWord)) {//Stops dictionary if word is found
inputFile.close();
break;
// ...
重复此过程,直到创建单词列表中包含的单词。我的问题是,如果我将单词列表初始化为数组,是否可以加快进程?我想我会读取RAM而不是HDD。我试图将这个实现到我的代码中,但是在>。<
中拼接太复杂了答案 0 :(得分:2)
使用静态初始化程序只使用一次设置的HashSet
速度会更好,如下所示:
private static final Set<String> lowerCaseWords = new HashSet<String>();
static {
final Scanner inputFile = new Scanner(new File("common_words.txt"));
while (inputFile.hasNextLine()) {
lowerCaseWords.add(inputFile.nextLine().toLowerCase());
}
inputFile.close();
}
静态初始值设定项(static {
块)仅在加载类时运行一次,允许您在加载类时将所有单词加载到Set
一次。
然后您可以使用Set
,如此:
if (lowerCaseWords.contains(candidateWord.toLowerCase()) {
// Is a word
} else {
// Isn't a word
}