Advertisement
LoraOrliGeo

ExcelFunctions

Jun 25th, 2019
167
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.96 KB | None | 0 0
  1. package Exams;
  2.  
  3. import java.util.*;
  4. import java.util.stream.Collectors;
  5.  
  6. public class ExcelFunctions {
  7.     public static void main(String[] args) {
  8.  
  9.         Scanner sc = new Scanner(System.in);
  10.  
  11.         int n = Integer.parseInt(sc.nextLine());
  12.  
  13.         List<String> headers = Arrays.stream(sc.nextLine().split(",\\s+")).collect(Collectors.toList());
  14.  
  15.         List<List<String>> matrix = new ArrayList<>(n - 1);
  16.  
  17.         matrix.add(headers);
  18.  
  19.         for (int r = 1; r < n; r++) {
  20.             matrix.add(new ArrayList<>());
  21.             String[] tokens = sc.nextLine().split(",\\s+");
  22.             for (int c = 0; c < tokens.length; c++) {
  23.                 matrix.get(r).add(tokens[c]);
  24.             }
  25.         }
  26.  
  27.         String[] commands = sc.nextLine().split("\\s+");
  28.         String option = commands[0];
  29.  
  30.         switch (option) {
  31.             case "hide":
  32.                 String headerToHide = commands[1];
  33.                 hideHeader(matrix, headerToHide);
  34.                 break;
  35.             case "sort":
  36.                 String criteria = commands[1];
  37.                 sortHeader(matrix, criteria);
  38.                 break;
  39.             case "filter":
  40.                 String header = commands[1];
  41.                 String value = commands[2];
  42.                 filterHeader(matrix, header, value);
  43.                 break;
  44.         }
  45.     }
  46.  
  47.     private static void hideHeader(List<List<String>> matrix, String headerToHide) {
  48.         int indexOfHeader = matrix.get(0).indexOf(headerToHide);
  49.  
  50.         for (int r = 0; r < matrix.size(); r++) {
  51.             matrix.get(r).remove(indexOfHeader);
  52.         }
  53.  
  54.         for (int r = 0; r < matrix.size(); r++) {
  55.             System.out.println(String.join(" | ", matrix.get(r)));
  56.         }
  57.     }
  58.  
  59.     public static void sortHeader(List<List<String>> matrix, String criteria) {
  60.         int headerToSort = matrix.get(0).indexOf(criteria);
  61.         List<String> sortCriteria = new ArrayList<>();
  62.  
  63.         for (int r = 1; r < matrix.size(); r++) {
  64.             sortCriteria.add(matrix.get(r).get(headerToSort));
  65.         }
  66.  
  67.         Collections.sort(sortCriteria);
  68.  
  69.         System.out.println(String.join(" | ", matrix.get(0)));
  70.         for (int i = 0; i < sortCriteria.size(); i++) {
  71.             String element = sortCriteria.get(i);
  72.  
  73.             for (int r = 1; r < matrix.size(); r++) {
  74.                 if (matrix.get(r).get(headerToSort).equals(element)){
  75.                     System.out.println(String.join(" | ", matrix.get(r)));
  76.                 }
  77.             }
  78.         }
  79.     }
  80.  
  81.     private static void filterHeader(List<List<String>> matrix, String header, String value) {
  82.         int headerToFilter = matrix.get(0).indexOf(header);
  83.  
  84.         System.out.println(String.join(" | ", matrix.get(0)));
  85.         for (int r = 1; r < matrix.size(); r++) {
  86.             if (matrix.get(r).get(headerToFilter).equals(value)){
  87.                 System.out.println(String.join(" | ", matrix.get(r)));
  88.             }
  89.         }
  90.     }
  91. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement