package com.company; import java.util.ArrayList; import java.util.Arrays; import java.util.Comparator; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Map.Entry; import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n = Integer.parseInt(sc.nextLine()); Map> grades = new HashMap<>(); while (n != 0) { String name = sc.nextLine(); double grade = Double.parseDouble(sc.nextLine()); if (grades.containsKey(name)) { grades.get(name).add(grade); } else { grades.put(name, new ArrayList<>(Arrays.asList(grade))); } n--; } grades.entrySet().stream().sorted(Entry.>comparingByValue((v1, v2) -> Double.compare(v2.stream().mapToDouble(Double::doubleValue).summaryStatistics().getAverage(), v1.stream().mapToDouble(Double::doubleValue).summaryStatistics().getAverage())) ).filter((k) -> k.getValue().stream().mapToDouble(Double::doubleValue).summaryStatistics().getAverage() >= 4.5) .forEachOrdered(p -> { System.out.printf("%s -> %.2f%n", p.getKey(), p.getValue().stream().mapToDouble(Double::doubleValue) .summaryStatistics().getAverage()); }); } }