/**
 Считать с консоли 2 имени файла - file1, file2.
 Файлы содержат строки, file2 является обновленной версией file1, часть строк совпадают.
 Нужно создать объединенную версию строк, записать их в список lines.
 Операции ADDED и REMOVED не могут идти подряд, они всегда разделены SAME.
 Пустые строки даны в примере для наглядности.
 В оригинальном и редактируемом файлах пустых строк нет!

 Пример 1:
 оригинальный    редактированный    общий
 file1:          file2:             результат:(lines)

 строка1         строка1            SAME строка1
 строка2                            REMOVED строка2
 строка3         строка3            SAME строка3
 строка4                            REMOVED строка4
 строка5         строка5            SAME строка5
 строка0            ADDED строка0
 строка1         строка1            SAME строка1
 строка2                            REMOVED строка2
 строка3         строка3            SAME строка3
 строка4            ADDED строка4
 строка5         строка5            SAME строка5
 строка0                            REMOVED строка0

 Пример 2:
 оригинальный    редактированный    общий
 file1:          file2:             результат:(lines)

 строка1         строка1            SAME строка1
 строка0            ADDED строка0

 Пустые строки в примере означают, что этой строки нет в определенном файле.

 Требования:
 1. Класс Solution должен содержать класс LineItem.
 2. Класс Solution должен содержать enum Type.
 3. Класс Solution должен содержать публичное статическое поле lines типа List<LineItem>,
 которое сразу проинициализировано.
 4. В методе main(String[] args) программа должна считывать имена файлов с консоли (используй BufferedReader).
 5. В методе main(String[] args) BufferedReader для считывания данных с консоли должен быть закрыт.
 6. Программа должна считывать содержимое первого и второго файла (используй FileReader).
 7. Потоки чтения из файлов (FileReader) должны быть закрыты.
 8. Список lines должен содержать объединенную версию строк из файлов, где для каждой строки указана
 одна из операций ADDED, REMOVED, SAME.
 */
Перечитал несколько раз - ничего не понял. Как я воспринимаю условия: Есть 2 файла: 1 и 2. 2й местами содержит идентичные 1му строки. Нужно добавить ВСЕ строки в лист: - если строки совпадают, то в листе это будет выглядеть так: SAMEпробелСтрока; - если строки не совпадают, то: что? ADDEDпробелСтрока? REMOVEDпробелСтрока? Ведь отличающуюся строку можно считать, как вновь добавленной, так и удалённой. - дальше вообще всё в тумане... Нужно объяснение человеческим языком. Спасибо.