Advertisement
dzocesrce

Napredno tips

Jun 8th, 2025
348
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 4.33 KB | None | 0 0
  1. 1. GROUPING BY EXAMPLE    
  2. public Map<Integer, Set<File>> byYear() {
  3.         return files.stream()
  4.                 .collect(Collectors.groupingBy(
  5.                         file -> file.getCreateAt().getYear(),
  6.                         Collectors.toSet()
  7.                 ));
  8.     }
  9. 2. GROUPING BY EXAMPLE
  10. Map<String, Set<Employee>> employeesByLevels = employees.stream()
  11.                 .filter(i -> levels.contains(i.getLevel()))
  12.                 .collect(Collectors.groupingBy(
  13.                         Employee::getLevel,
  14.                         TreeMap::new, // map sorted by key
  15.                         Collectors.toCollection(() -> new TreeSet<>(Comparator.comparing(Employee::getSalary,Comparator.reverseOrder()))) // values sorted too
  16.                 ));
  17.             return employeesByLevels;
  18.  
  19. 3. SORTING IN A MAP
  20. Map<String, List<Shape>> shapesByUser = shapes.stream()
  21.                 .collect(Collectors.groupingBy(
  22.                         Shape::getId,
  23.                         Collectors.toList()
  24.                 ))
  25.                 .entrySet()
  26.                 .stream()
  27.                 .sorted(Comparator
  28.                         .<Map.Entry<String, List<Shape>>>comparingInt(e -> e.getValue().size())
  29.                         .reversed()
  30.                         .thenComparingDouble(e -> e.getValue().stream().mapToDouble(Shape::getArea).sum())
  31.                         .reversed()
  32.                 )
  33.                 .collect(Collectors.toMap(
  34.                         Map.Entry::getKey,
  35.                         e -> e.getValue().stream()
  36.                                 .sorted(Comparator.comparingDouble(Shape::getPerimeter).reversed())
  37.                                 .collect(Collectors.toList()),
  38.                         (e1, e2) -> e1,
  39.                         LinkedHashMap::new
  40.                 ));
  41.  
  42. 4. ATOMIC INTEGER
  43.  
  44. AtomicInteger counter = new AtomicInteger(1);
  45.         paymentList.stream().filter(i->i.index.equals(id))
  46.                 .sorted(Comparator.comparing(Payment::getPrice,Comparator.reverseOrder()))
  47.                 .forEach(i->printStream.println(String.format("%d. %s %d",
  48.                         counter.getAndIncrement(),i.title,i.price)));
  49.  
  50. 5. FLATMAP
  51.  
  52. studentsByBranch = studentsByBranch.entrySet().stream().sorted(
  53.                 Comparator.comparingLong(e->e.getValue().stream().flatMap(i->i.getGrades()
  54.                         .stream()).filter(i->i==10).count())
  55.         ).collect(Collectors.toMap(
  56.                 Map.Entry::getKey,
  57.                 Map.Entry::getValue,
  58.                 (e1,e2)->e1,
  59.                 LinkedHashMap::new
  60.         ));
  61.         List<String> branches = studentsByBranch.keySet().stream().collect(Collectors.toList()).reversed();
  62.         for(String branch : branches){
  63.             Map<Integer,Long> numberOfStudentsPerGrade = studentsByBranch.get(branch).stream()
  64.                     .flatMap(s -> s.getGrades().stream())
  65.                     .collect(Collectors.groupingBy(
  66.                     e->e.intValue(),
  67.                     TreeMap::new,
  68.                     Collectors.counting()
  69.             ));
  70.             printStream.println(branch);
  71.             numberOfStudentsPerGrade.entrySet().stream().forEach(
  72.                     i-> printStream.println(String.format("%d | (%d)",i.getKey(),i.getValue()))
  73.             );
  74.         }
  75.  
  76. 6. COLLECTORS JOINING
  77. String[] allCourses = studentsByIndex.values().stream()
  78.                 .map(i->i.getCoursesByTerm().values().stream().flatMap(c->c.stream()).collect(Collectors.joining(",")))
  79.                 .collect(Collectors.joining(",")).split(",");
  80.  
  81. 7. MORE MAP SORTING
  82.  
  83. gamesByTeam.entrySet().stream()
  84.                 .sorted(Comparator.comparing(
  85.                                 (Map.Entry<String, Team> e) -> e.getValue().getPoints(),
  86.                                 Comparator.reverseOrder())
  87.                         .thenComparing(e -> e.getValue().getGoalDifference(),
  88.                                 Comparator.reverseOrder())
  89.                         .thenComparing(e->e.getKey()))
  90.  
  91.  
  92. 8. MAP GROUPING BY 0 PROBLEM
  93.  
  94.   return IntStream.range(5, 11)
  95.                 .boxed()
  96.                 .collect(Collectors.toMap(
  97.                         grade -> grade,
  98.                         grade -> studentsByGrade.getOrDefault(grade, 0L),
  99.                         (a, b) -> a,
  100.                         TreeMap::new
  101.                 ));
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement