my "lines" list looks good as per requirements so I just cannot see what is wrong here ? help would be v. gratefully received
package com.codegym.task.task19.task1916;
import java.io.*;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.ListIterator;
import java.util.stream.Collectors;
import java.util.stream.Stream;
/*
Tracking changes
*/
public class Solution {
public static List<LineItem> lines = new ArrayList<>();
public static void main(String[] args) throws IOException {
//get filenames
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
String fileName1 = reader.readLine();
String fileName2 = reader.readLine();
//read files into lists for processing
List<String> file1List = readFile(fileName1);
List<String> file2List = readFile(fileName2);
Iterator<String> iteratorFile1List = file1List.iterator();
Iterator<String> iteratorFile2List = file2List.iterator();
String file1Line;
String file2Line;
//step through lists ( no blank lines ) to perform merge
while (iteratorFile1List.hasNext() || iteratorFile2List.hasNext()){
if (iteratorFile1List.hasNext()) file1Line = iteratorFile1List.next(); else file1Line="" ;
if (iteratorFile2List.hasNext()) file2Line = iteratorFile2List.next(); else file2Line="" ;
//merge
if (file1Line.equals(file2Line)) {
lines.add(new LineItem(Type.SAME,file1Line));
}
if (file2Line.equals("")) {
lines.add(new LineItem(Type.REMOVED,file1Line));
}
if (file1Line.equals("")) {
lines.add(new LineItem(Type.ADDED,file2Line));
}
}
reader.close();
}
public static List<String> readFile(String filename) throws IOException {
//read the file into List for processing
FileReader fileReader = new FileReader(filename);
BufferedReader bufferedReader = new BufferedReader(fileReader);
Stream<String> fileStream = bufferedReader.lines();
List<String> fileList = fileStream
.collect(Collectors.toList());
bufferedReader.close();
return fileList;
}
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;
}
}
}