I got problem - I don't know where I made mistake.
package pl.codegym.task.task19.task1916;
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
/*
Śledzenie zmian
*/
public class Solution {
public static List<LineItem> lines = new ArrayList<>();
public static List<LineItem> samelines = new ArrayList<>();
public static List<LineItem> addedlines = new ArrayList<>();
public static List<String> addedLinesStrings = new ArrayList<>();
public static List<LineItem> removedlines = new ArrayList<>();
public static List<String> removedLinesStrings = new ArrayList<>();
public static List<String> originalLines = new ArrayList<>();
public static List<String> updatededlLines = new ArrayList<>();
public static void main(String[] args) throws IOException {
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in));
String file1 = bufferedReader.readLine();
String file2 = bufferedReader.readLine();
FileReader fileReader1 = new FileReader(file1);
FileReader fileReader2 = new FileReader(file2);
BufferedReader bufferedReader1 = new BufferedReader(fileReader1);
BufferedReader bufferedReader2 = new BufferedReader(fileReader2);
while(bufferedReader1.ready()){
originalLines.add(bufferedReader1.readLine());
}
while(bufferedReader2.ready()){
updatededlLines.add(bufferedReader2.readLine());
}
//Same lines
for (int i = 0; i < originalLines.size(); i++) {
String lineToCheck = originalLines.get(i);
for (int j = 0; j < updatededlLines.size(); j++) {
String line = updatededlLines.get(j);
if(line.equals(lineToCheck)){
samelines.add(new LineItem(Type.SAME,lineToCheck));
}
}
}
//Removed lines
for (int i = 0; i < originalLines.size(); i++) {
String lineToCheck = originalLines.get(i);
boolean lineExist = false;
for (int j = 0; j < updatededlLines.size(); j++) {
String line = updatededlLines.get(j);
if(line.equals(lineToCheck)){
lineExist = true;
}
}
if(lineExist==false){
removedlines.add(new LineItem(Type.REMOVED,lineToCheck));
removedLinesStrings.add(lineToCheck);
}
} //Added lines
for (int i = 0; i < updatededlLines.size(); i++) {
String lineToCheck = updatededlLines.get(i);
boolean lineExist = false;
for (int j = 0; j < originalLines.size(); j++) {
String line = originalLines.get(j);
if(line.equals(lineToCheck)){
lineExist = true;
}
}
if(lineExist==false){
addedlines.add(new LineItem(Type.ADDED,lineToCheck));
addedLinesStrings.add(lineToCheck);
}
}
// System.out.println("Same lines");
// for (int i = 0; i < samelines.size(); i++) {
// System.out.println(samelines.get(i).line);
// }
// System.out.println("Added lines");
// for (int i = 0; i < addedlines.size(); i++) {
// System.out.println(addedlines.get(i).line);
// }
// System.out.println("Removed lines");
// for (int i = 0; i < removedlines.size(); i++) {
// System.out.println(removedlines.get(i).line);
// }
HashSet<String> linesSet = new HashSet<>(addedLinesStrings);
linesSet.addAll(removedLinesStrings);
int counter = 0;
int samelineCounter =0;
for(String e : linesSet){
if(counter%2 == 0){
if(samelineCounter==samelines.size()){
samelineCounter = 0;
}
lines.add(samelines.get(samelineCounter));
samelineCounter++;
counter++;
}
if(addedLinesStrings.contains(e)){
lines.add(new LineItem (Type.ADDED,e));
counter++;
}
if(removedLinesStrings.contains(e)){
lines.add(new LineItem (Type.REMOVED,e));
counter++;
}
}
bufferedReader.close();
bufferedReader1.close();
bufferedReader2.close();
//
// for (int i = 0; i < lines.size(); i++) {
// System.out.println(lines.get(i).type +lines.get(i).line );
// }
}
public static enum Type {
ADDED, // Dodana nowa linia
REMOVED, // Linia usunięta
SAME // Bez zmian
}
public static class LineItem {
public Type type;
public String line;
public LineItem(Type type, String line) {
this.type = type;
this.line = line;
}
}
}