Please let me know another way to be verified.
package com.codegym.task.task19.task1916;
import java.util.*;
import java.io.*;
/*
Tracking changes
*/
public class Solution {
public static List<LineItem> lines = new ArrayList<>();
public static void main(String[] args) throws IOException {
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
String file1 = reader.readLine();
String file2 = reader.readLine();
reader.close();
ArrayList<String> originalFile = new ArrayList<>();
ArrayList<String> updatedFile = new ArrayList<>();
BufferedReader reader2 = new BufferedReader(new FileReader(file1));
BufferedReader reader3 = new BufferedReader(new FileReader(file2));
while (reader2.ready()) {
String str2 = reader2.readLine();
originalFile.add(str2);
}
while (reader3.ready()) {
String str3 = reader3.readLine();
updatedFile.add(str3);
}
reader2.close();
reader3.close();
Map<String, Integer> map = new HashMap<>();
for (String org : originalFile) {
map.put(org, 1);
}
for (String udt : updatedFile) {
if (map.containsKey(udt))
map.replace(udt, 2);
else map.put(udt, 3);
}
for (Map.Entry<String, Integer> entry : map.entrySet()) {
if (entry.getValue() == 1)
lines.add(new LineItem(Type.REMOVED, entry.getKey()));
else if (entry.getValue() == 2)
lines.add(new LineItem(Type.SAME, entry.getKey()));
else if (entry.getValue() == 3)
lines.add(new LineItem(Type.ADDED, entry.getKey()));
else break;
}
}
public static enum Type {
ADDED, // New line added
REMOVED, // Line deleted
SAME // No change
}
public static class LineItem {
public Type type;
public String line;
public LineItem(Type type, String line) {
this.type = type;
this.line = line;
}
}
}