Advertisement
LoraOrliGeo

P6_Courses_Maps_Ex

Apr 15th, 2019
180
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 1.27 KB | None | 0 0
  1. package ex1_MapsLambdaStreamAPI_13March2019;
  2.  
  3. import java.util.ArrayList;
  4. import java.util.LinkedHashMap;
  5. import java.util.List;
  6. import java.util.Map;
  7. import java.util.Scanner;
  8.  
  9. public class P6_Courses {
  10.     public static void main(String[] args) {
  11.         @SuppressWarnings("resource")
  12.  
  13.         Scanner sc = new Scanner(System.in);
  14.  
  15.         Map<String, List<String>> courses = new LinkedHashMap<>();
  16.  
  17.         while (true) {
  18.             String[] line = sc.nextLine().split("\\s+:\\s+");
  19.             String course = line[0];
  20.  
  21.             if (course.equals("end")) {
  22.                 break;
  23.             }
  24.  
  25.             String student = line[1];
  26.  
  27.             if (!courses.containsKey(course)) {
  28.                 courses.put(course, new ArrayList<>());
  29.                 courses.get(course).add(student);
  30.             } else {
  31.                 courses.get(course).add(student);
  32.             }
  33.         }
  34.  
  35.         Map<String, List<String>> orderedCourses = new LinkedHashMap<>();
  36.        
  37.         courses.entrySet().stream().sorted((m1, m2) -> {
  38.             int size = Integer.compare(m2.getValue().size(), m1.getValue().size());
  39.             return size;
  40.         }).forEach(e -> orderedCourses.put(e.getKey(), e.getValue()));
  41.        
  42.         for (Map.Entry<String, List<String>> kvp : orderedCourses.entrySet()) {
  43.             System.out.printf("%s: %d%n",kvp.getKey(), kvp.getValue().size());
  44.             kvp.getValue().stream().sorted().forEach(v -> System.out.printf("-- %s%n", v));
  45.         }
  46.     }
  47. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement