IrinaIgnatova

Company Users-Maps, Lambda, Stream

Jul 18th, 2019
66
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.57 KB | None | 0 0
  1. package com.company;
  2.  
  3.  
  4. import java.util.*;
  5. import java.util.stream.Collectors;
  6.  
  7. public class Main {
  8.  
  9.     public static void main(String[] args) {
  10.  
  11.         Scanner scanner = new Scanner(System.in);
  12.  
  13.         String input = scanner.nextLine();
  14.         TreeMap<String, ArrayList<String>> companyUsers = new TreeMap<>();// по азбучен ред на companyName
  15.  
  16.         while (!input.equals("End")) {
  17.             String[] tokens = input.split(" -> ");
  18.             String companyName = tokens[0];//key
  19.             String employeeID = tokens[1];//value in List
  20.  
  21.             if (!companyUsers.containsKey(companyName)) {//за първия път
  22.                 companyUsers.put(companyName, new ArrayList<>());
  23.                 companyUsers.get(companyName).add(employeeID);
  24.             } else {
  25.                 //за всеки следващ път проверяваме с for по размера на value= ArrayList
  26.                 // дали в дадена компания вече съществува такъв служител и ако да- не го записваме
  27.                 for (int i = 0; i < companyUsers.size(); i++) {
  28.                     if (!companyUsers.get(companyName).contains(employeeID)) {
  29.                         companyUsers.get(companyName).add(employeeID);
  30.                     }
  31.                 }
  32.             }
  33.  
  34.             input = scanner.nextLine();
  35.         }
  36.  
  37.         companyUsers
  38.                 .entrySet()
  39.                 .stream()
  40.                 .forEach(e -> {       //тук печатаме всички key един след друг, т.е печатаме един key = e.getKey()
  41.                     // и после отиваме на стойността за съответния key=e.getValue()
  42.                     // дали ще се казва е или друго ние решаваме
  43.                     System.out.printf("%s%n", e.getKey());
  44.  
  45.                     e.getValue()//тук взимаме всички стойности от ArrayList за съответния key,
  46.                             // за това ако горе е forEach(e->
  47.                             //и тук трябва да бъде е.getValue()
  48.                             .stream()//защщотое List
  49.                             .forEach(entry -> System.out.printf("-- %s%n", entry));
  50.                     //за да изпечатаме всички елементи от List
  51.                     //тук с entry сме кръстили елементите в List-a
  52.                 });
  53.  
  54.  
  55.     }
  56.  
  57. }
Add Comment
Please, Sign In to add comment