如何将ArrayList中的单词与文件中的单词进行比较?

时间:2015-02-21 13:39:51

标签: java arraylist

我正在创建的程序是一种“拼写检查”类型的程序,但已被明确告知在ArrayList中包含字典单词,而我们正在将这些单词比较为.txt文件的文件

对于我的生活,我无法弄清楚如何比较它们。

这是我到目前为止所得到的(它没有比较循环,因为它们都没有接近工作)。

package testDelimeter;
import java.io.File;
import java.io.FileNotFoundException;
import java.util.ArrayList;
import java.util.Scanner;

public class test {
public static void main(String[] args) throws FileNotFoundException {

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


    File  inFile = new File("C:\\Users\\Ceri\\workspace1\\testDelimeter\\src\\testDelimeter\\" + "dict" + ".txt");
    Scanner in = new Scanner(inFile);

    File  text = new File("C:\\Users\\Ceri\\workspace1\\testDelimeter\\src\\testDelimeter\\" + "text" + ".txt");
    Scanner s = new Scanner(text);


    while(in.hasNext()){
        dict.add(in.next());
    }


}


}

指导比任何事都更棒!

1 个答案:

答案 0 :(得分:0)

如果我理解你,这应该有效:

import java.util.ArrayList;
import java.util.Scanner;

public class Test {

    public static void main(String[] args) {
        ArrayList<String> dictionary = createDictionaryFromFile("C:\\path\\to\\dictionary\\dictionary.txt");

        Scanner fileToCheck = new Scanner("C:\\path\\to\\file");
        while (fileToCheck.hasNext()) {
            String wordToCheck = fileToCheck.next();
            if (!dictionary.contains(wordToCheck.toLowerCase())) {
                System.out.println("Misspelled word: " + wordToCheck);
            }
        }
    }

    private static ArrayList<String> createDictionaryFromFile(String path) {
        Scanner scanner = new Scanner(path);
        ArrayList<String> dictionary = new ArrayList<>();
        while (scanner.hasNext()) {
            dictionary.add(scanner.next().toLowerCase());
        }
        return dictionary;
    }
}

ArrayList的包含操作也不是很有效。如果将ArrayList更改为Set,则效率会更高。