не понимаю как решить последние пункты без того чтоб нарушать прошлые
package com.javarush.task.task17.task1721;
import java.io.File;
import java.io.FileNotFoundException;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
/*
Транзакционность
*/
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 CorruptedDataException {
Scanner consolescanner = new Scanner(System.in);
String name1=consolescanner.nextLine(),name2=consolescanner.nextLine();
try {
Scanner scanner1 = new Scanner(new File(name1) );
while(scanner1.hasNext()) {
allLines.add(scanner1.nextLine());
}
scanner1.close();
Scanner scanner2;
scanner2 = new Scanner(new File(name2) );
while(scanner2.hasNext()) {
forRemoveLines.add(scanner2.nextLine());
}
scanner2.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
}
}
public void joinData () throws CorruptedDataException {
boolean passes = true;
for(int i = 0;i<forRemoveLines.size();i++) {
for(int n = 0;i<allLines.size();n++) {
if(forRemoveLines.get(i).equals(allLines.get(n))) {
break;
}
else if(n==allLines.size()-1) {
passes=false;
}
}
}
if(passes) {
for(int i = 0;i<forRemoveLines.size();i++) {
for(int n = 0;i<allLines.size();n++) {
if(forRemoveLines.get(i).equals(allLines.get(n))) {
allLines.remove(n);
break;
}
}
}
}
else {
allLines = new ArrayList<String>();
throw(new CorruptedDataException());
}
}
}