Если содержимое файла2 начинается со строки, которой нет в файл 1, почему то не срабатывается условие else { if(line.equals(linesFile2.get(i + 1))){ lines.add(new LineItem(Type.ADDED, linesFile2.get(i))); lines.add(new LineItem(Type.SAME, line)); i = i + 2; а выполняется else lines.add(new LineItem(Type.REMOVED, line));