通过初始化加速程序

时间:2017-05-07 06:00:22

标签: java

因此,对于我的编程类,我提交了一个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。我试图将这个实现到我的代码中,但是在>。<

中拼接太复杂了

1 个答案:

答案 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
}