Привет,
Задумка была такая:
1. Применяю removeAll(Collection<?> c), если в allLines есть все строки из forRemoveLines, мы их удаляем и исполняем п. 3;
2. Если я правильно понял логику работы метода removeAll, когда хоть одна строка не совпадает метод возвращает false и ничего не меняется.
3. Если в п.2 получаю false, очищаю allLines через clear().
Почему не проходит?
package com.javarush.task.task17.task1721;
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;
/*
Транзакционность
*/
public class Solution {
public static List<String> allLines = new ArrayList<String>();
public static List<String> forRemoveLines = new ArrayList<String>();
public static void main(String[] args) throws IOException {
BufferedReader consoleReader = new BufferedReader(new InputStreamReader(System.in));
BufferedReader fileReader = new BufferedReader(new FileReader(consoleReader.readLine()));
BufferedReader fileReader2 = new BufferedReader(new FileReader(consoleReader.readLine()));
while (fileReader.ready()) {
allLines.add(fileReader.readLine());
}
while (fileReader2.ready()) {
forRemoveLines.add(fileReader2.readLine());
}
new Solution().joinData();
consoleReader.close();
fileReader.close();
fileReader2.close();
}
public void joinData() throws CorruptedDataException {
boolean result = allLines.removeAll(forRemoveLines);
if (!result){
allLines.clear();
throw new CorruptedDataException();
}
}
}