Вроде, все условия выполняются.
Код тестировала.
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.Collections;
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 List<String> allLines_copy = new ArrayList<String>();
public static List<String> forRemoveLines_copy = new ArrayList<String>();
public static void main(String[] args) throws IOException {
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
String filename1 = reader.readLine();
String filename2 = reader.readLine();
reader.close();
BufferedReader reader1 = new BufferedReader(new FileReader(filename1));
while (reader1.ready()) {
String s = reader1.readLine();
allLines.add(s);
allLines_copy.add(s);
}
reader1.close();
BufferedReader reader2 = new BufferedReader(new FileReader(filename2));
while (reader2.ready()) {
String s = reader2.readLine();
forRemoveLines.add(s);
forRemoveLines_copy.add(s);
}
reader2.close();
Solution solution = new Solution();
try {
solution.joinData();
} catch (CorruptedDataException e) {
e.printStackTrace();
}
}
public void joinData() throws CorruptedDataException {
try {
//allLines_copy.retainAll(forRemoveLines_copy);
if (allLines_copy.containsAll(forRemoveLines_copy)) {
allLines.removeAll(forRemoveLines);
} else {
allLines.clear();
throw new CorruptedDataException();
}
}
finally {
}
}
}