Advertisement
jaVer404

level19.lesson10.bonus01 (done)

Mar 28th, 2016
94
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 5.21 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.  
  14. Файлы содержат строки, file2 является обновленной версией file1, часть строк совпадают.
  15. Нужно создать объединенную версию строк, записать их в список lines
  16. Операции ADDED и REMOVED не могут идти подряд, они всегда разделены SAME
  17. Пример:
  18. оригинальный   редактированный    общий
  19. file1:         file2:             результат:(lines)
  20.  
  21. строка1        строка1            SAME строка1
  22. строка2                           REMOVED строка2
  23. строка3        строка3            SAME строка3
  24. строка4                           REMOVED строка4
  25. строка5        строка5            SAME строка5
  26. строка0                           ADDED строка0
  27. строка1        строка1            SAME строка1
  28. строка2                           REMOVED строка2
  29. строка3        строка3            SAME строка3
  30. строка5                           ADDED строка5
  31. строка4        строка4            SAME строка4
  32. строка5                           REMOVED строка5
  33. */
  34.  
  35. public class Solution {
  36.     public static List<LineItem> lines = new ArrayList<LineItem>();
  37.  
  38.     public static void main(String[] args) {
  39.         BufferedReader readName = null;
  40.         try
  41.         {
  42.             readName = new BufferedReader(new InputStreamReader(System.in));
  43.             String fileName1 = readName.readLine();
  44.             //String fileName1 = "d:\\Test_files\\Input.txt";
  45.             String fileName2 = readName.readLine();
  46.             //String fileName2 = "d:\\Test_files\\Output.txt";
  47.             readName.close();
  48.             ArrayList<String> fileOneList = fileToList(fileName1);
  49.             ArrayList<String> fileTwoList = fileToList(fileName2);
  50. /*-----------------------------------------------------------*/
  51.             for (Iterator<String> iterator1 = fileOneList.iterator(); iterator1.hasNext();)
  52.             {
  53.                 String temp1 = iterator1.next();
  54.                 for (Iterator<String> iterator2 = fileTwoList.iterator(); iterator2.hasNext();)
  55.                 {
  56.                     String temp2 = iterator2.next();
  57.                     if (temp1.equals(temp2))/*если одинаковые строчки*/
  58.                     {
  59.                         lines.add(new LineItem(Type.SAME,temp1));
  60.                         iterator1.remove();
  61.                         iterator2.remove();
  62.                         break;
  63.                     }
  64.                     else
  65.                     {
  66.                         if (!(fileTwoList.contains(temp1)))
  67.                         {
  68.                             lines.add(new LineItem(Type.REMOVED,temp1));
  69.                             iterator1.remove();
  70.                             break;
  71.                         }
  72.                         else
  73.                         {
  74.                             lines.add(new LineItem(Type.ADDED,temp2));
  75.                             iterator2.remove();
  76.                            //break;
  77.                         }
  78.                     }
  79.                 }
  80.             }
  81.             if (!(fileOneList.isEmpty())) {
  82.                 for (String s : fileOneList) {
  83.                     lines.add(new LineItem(Type.REMOVED,s));
  84.                 }
  85.             }
  86.             if (!(fileTwoList.isEmpty())) {
  87.                 for (String s : fileTwoList) {
  88.                     lines.add(new LineItem(Type.ADDED,s));
  89.                 }
  90.             }
  91. /*-----------------------------------------------------------*/
  92.  
  93.             for (LineItem li : lines)
  94.             {
  95.                 System.out.println(li.type+" "+li.line);
  96.             }
  97. /*-----------------------------------------------------------*/
  98.  
  99.         } catch (IOException e) {}
  100.  
  101.     }
  102.  
  103.  
  104.     public static enum Type
  105.     {
  106.         ADDED,        //добавлена новая строка
  107.         REMOVED,      //удалена строка
  108.         SAME          //без изменений
  109.     }
  110.  
  111.     public static class LineItem
  112.     {
  113.         public Type type;
  114.         public String line;
  115.  
  116.         public LineItem(Type type, String line)
  117.         {
  118.             this.type = type;
  119.             this.line = line;
  120.         }
  121.     }
  122.  
  123.     public static ArrayList<String> fileToList (String fileName)
  124.     {
  125.         ArrayList<String> linesFromFile = new ArrayList<>();
  126.         try (BufferedReader br = new BufferedReader(new FileReader(fileName))) {
  127.             String line;
  128.             while ((line = br.readLine()) != null)
  129.             {
  130.                 linesFromFile.add(line);
  131.             }
  132.         }
  133.         catch (IOException e) {}
  134.         return linesFromFile;
  135.     }
  136. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement