package com.javarush.task.task19.task1916; import java.io.BufferedReader; import java.io.FileReader; import java.io.InputStreamReader; import java.util.ArrayList; import java.util.List; /* Отслеживаем изменения */ public class Solution { public static List<LineItem> lines = new ArrayList<LineItem>(); public static void main(String[] args) throws Exception { BufferedReader reader = new BufferedReader(new InputStreamReader(System.in)); BufferedReader file1 = new BufferedReader(new FileReader(reader.readLine())); BufferedReader file2 = new BufferedReader(new FileReader(reader.readLine())); ArrayList<String> f1 = new ArrayList<>(); ArrayList<String> f2 = new ArrayList<>(); while(file1.ready()){ f1.add(file1.readLine()); } while(file2.ready()){ f2.add(file2.readLine()); } Solution.setLines(f1,f2); file1.close(); file2.close(); reader.close(); } public static void setLines(ArrayList<String> f1, ArrayList<String> f2){ for(String s : f1){ if (f2.contains(s)) { lines.add(new LineItem(Type.SAME,s)); }else{ lines.add(new LineItem(Type.REMOVED,s)); } } for(int i = 0; i < f2.size();i++){ if(!f1.contains(f2.get(i))){ int a = 0; for(LineItem item : lines){ if(item.line.equals(f2.get(i-1))); a = lines.indexOf(item); } lines.add(a + 1,new LineItem(Type.ADDED,f2.get(i))); } } } public static enum Type { ADDED, //добавлена новая строка REMOVED, //удалена строка SAME //без изменений } public static class LineItem { public Type type; public String line; public LineItem(Type type, String line) { this.type = type; this.line = line; } } }