сравнивая 2 ArrayList в Java - PullRequest
0 голосов
/ 28 октября 2018

Я получил 2 ArrayList

Список fileArray = new ArrayList (); List fileTxt = new ArrayList ();

List<String> newDoc = new ArrayList<String>();        

while((fileName = fileRead.readLine()) !=null){
    fileArray.add(fileName);
}
fileRead.close();

while((txtName = txtRead.readLine()) !=null){
    fileTxt.add(txtName);
}
txtRead.close();

Я хочу сравнить fileArray данные с fileTxt данными, но не знаю, как это сделать, потому что для сравнения мне нужно сначала получить данные. И для этого мне нужно зациклить массив и использовать .get как

for(int a=0;a<fileTxt.size();a++){
    System.out.println(fileTxt.get(a));
}

Я знаю, что это неправильно, но любой может мне помочь.

примечание: я хочу использовать что-то вроде метода contains, но не могу, потому что данные состоят из 5 миллионов строк. (метод не равно)

Обновлено: я хочу найти слово в fileTxt, которое появилось в файле Array. (так в основном это как содержит)

Ответы [ 3 ]

0 голосов
/ 28 октября 2018

Вы можете сделать это, используя метод removeAll ().

fileArray.removeAll(fileTxt);
fileTxt.removeAll(fileArray);

Если у одного из них все еще есть данные, это означает, что два списка отличаются друг от друга.

Но хранится 5 миллионовЯ не советую вам данные в списке Java.Возможно, вам следует подумать о чем-то еще.

0 голосов
/ 28 октября 2018

Есть замечательная функция.

System.out.println(array1.equals(array2)); 

Тогда, возможно, вы захотите проверить свой ответ руками:

    ArrayList like1 = new ArrayList();
    ArrayList like2 = new ArrayList(); 
    ...

    boolean flag = true;
    if (!Math.min(like1.size(), like2.size()) == Math.max(like1.size(), like2.size())) 
    {
        flag = false;
    }
    for (int i = 0; i < Math.min(like1.size(), like2.size()); i++) {
        if (!like1.get(i).equals(like2.get(i))) {
            flag = false;
            break;
        }
    }
0 голосов
/ 28 октября 2018

Чтобы сравнить 2 значения в ваших 2 массивах, вы сделаете это:

if(fileArray.get(index).equals(fileTxt.get(index)))
...