Advertisement
jaVer404

level19.lesson10.bonus01(secTRy failed)

Mar 13th, 2016
84
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 4.39 KB | None | 0 0
  1. package com.javarush.test.level19.lesson10.bonus01;
  2.  
  3. import java.io.BufferedReader;
  4. import java.io.FileReader;
  5. import java.io.IOException;
  6. import java.io.InputStreamReader;
  7. import java.util.ArrayList;
  8. import java.util.Iterator;
  9. import java.util.List;
  10.  
  11. /* Отслеживаем изменения
  12. Считать в консоли 2 имени файла - file1, file2.
  13. Файлы содержат строки, file2 является обновленной версией file1, часть строк совпадают.
  14. Нужно создать объединенную версию строк, записать их в список lines
  15. Операции ADDED и REMOVED не могут идти подряд, они всегда разделены SAME
  16. Пример:
  17. оригинальный   редактированный    общий
  18. file1:         file2:             результат:(lines)
  19.  
  20. строка1        строка1            SAME строка1
  21. строка2                           REMOVED строка2
  22. строка3        строка3            SAME строка3
  23. строка4                           REMOVED строка4
  24. строка5        строка5            SAME строка5
  25. строка0                           ADDED строка0
  26. строка1        строка1            SAME строка1
  27. строка2                           REMOVED строка2
  28. строка3        строка3            SAME строка3
  29. строка5                           ADDED строка5
  30. строка4        строка4            SAME строка4
  31. строка5                           REMOVED строка5
  32. */
  33.  
  34. public class Solution {
  35.     public static List<LineItem> lines = new ArrayList<LineItem>();
  36.  
  37.     public static void main(String[] args) {
  38.         BufferedReader readName = null;
  39.         try
  40.         {
  41.             readName = new BufferedReader(new InputStreamReader(System.in));
  42.             //String fileName1 = readName.readLine();
  43.             String fileName1 = "d:\\Test_files\\Input.txt";
  44.             //String fileName2 = readName.readLine();
  45.             String fileName2 = "d:\\Test_files\\Output.txt";
  46.             readName.close();
  47.             ArrayList<String> fileOneList = fileToList(fileName1);
  48.             ArrayList<String> fileTwoList = fileToList(fileName2);
  49.             Iterator<String> iterator = null;
  50.             Iterator<String> iteratorBase = null;
  51.             for (iteratorBase=fileTwoList.iterator();iteratorBase.hasNext();) {
  52.                 String line = iteratorBase.next();
  53.                 for (iterator = fileTwoList.iterator(); iterator.hasNext();) {
  54.                     String string = iterator.next();
  55.                     if (string.equals(line)) {
  56.                         lines.add(new LineItem(Type.SAME, line));
  57.                         iterator.remove();
  58.                         break;
  59.                     }
  60.                     else {
  61.                         lines.add(new LineItem(Type.REMOVED,line));
  62.                         iterator.remove();
  63.                         break;
  64.                     }
  65.                 }
  66.                 }
  67.             while (iteratorBase.hasNext()) {
  68.                 lines.add(new LineItem(Type.REMOVED,iteratorBase.next()));
  69.             }
  70.             while (iterator.hasNext()) {
  71.                 lines.add(new LineItem(Type.ADDED,iterator.next()));
  72.             }
  73.             for (LineItem li : lines){
  74.                 System.out.println(li.type+" "+li.line);
  75.             }
  76.         } catch (IOException e) {}
  77.  
  78.  
  79.  
  80.     }
  81.  
  82.  
  83.     public static enum Type {
  84.         ADDED,        //добавлена новая строка
  85.         REMOVED,      //удалена строка
  86.         SAME          //без изменений
  87.     }
  88.  
  89.     public static class LineItem {
  90.         public Type type;
  91.         public String line;
  92.  
  93.         public LineItem(Type type, String line) {
  94.             this.type = type;
  95.             this.line = line;
  96.         }
  97.     }
  98.  
  99.     public static ArrayList<String> fileToList (String fileName){
  100.         ArrayList<String> linesFromFile = new ArrayList<>();
  101.         try (BufferedReader br = new BufferedReader(new FileReader(fileName))) {
  102.             String line;
  103.             while ((line = br.readLine()) != null) {
  104.                 linesFromFile.add(line);
  105.             }
  106.         } catch (IOException e) {}
  107.         return linesFromFile;
  108.     }
  109. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement