比较2个数组列表的内容

时间:2015-02-23 03:44:52

标签: java arrays dictionary

此程序的目的是导入2个文件。明文文件和字典明文文件。

程序应搜索文件并比较单词并打印出不匹配的任何内容,即拼写错误的单词。

我已经使用扫描程序读取并将每行放入一个数组(字典以行显示)但我无法弄清楚如何将两个数组列表相互比较。

感谢任何帮助。

import java.io.File;    
import java.io.PrintWriter; 
import java.util.Scanner;
import java.io.FileNotFoundException;
import java.util.ArrayList;

public class Dictionary {
public static void main(String[] args) throws FileNotFoundException {
    ArrayList <String> words = new ArrayList<String>();
    ArrayList <String> dict = new ArrayList<String>();

    File inputFile = new File(args [0]);
    File inputDictionary = new File(args [1]);

    Scanner in = new Scanner(inputFile);
    Scanner inDict = new Scanner(inputDictionary);

    while(in.hasNext()) {
        String word = in.next();
        words.add(word);    
    }

    while (inDict.hasNextLine()) {
        String correctWord = inDict.nextLine();
        dict.add(correctWord);
    }
}
}

3 个答案:

答案 0 :(得分:0)

你需要循环遍历Arraylist中的每个单词,看看它是否包含在dict Arylylist中。

boolean[] misspelled = new boolean[words.size()];
int i = 0;
for (String word : words) {
    misspelled[i] = !dict.contains(word);
    i++;
}

这定义了一个布尔数组,它跟踪所有拼写错误的单词,如果某个索引中的单词不包含在字典列表中,那么该索引处的布尔值设置为true,这意味着该单词不是拼写正确。

答案 1 :(得分:0)

您需要迭代两个ArrayList并进行比较。

   for(int i = 0; i<words.size();i++){
        for(int j = 0; j<dict.size(); j++){
            if(words.get(i).equals(dict.get(j))){
                // they are equivalent strings
            }else{
                // not equivalent
            }
        }
    }

答案 2 :(得分:0)

试试这个。

for(String word : words){ //loop for words
   if(!dict.contains(word))  //check if dict contain word
     System.out.println(word); //print it if dict doesnt have word
}
相关问题