Advertisement
Guest User

Weird Task

a guest
Nov 26th, 2019
166
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.37 KB | None | 0 0
  1.  
  2. import java.io.IOException;
  3. import java.util.HashMap;
  4. import java.util.LinkedHashMap;
  5. import java.util.Map;
  6. import java.util.Scanner;
  7.  
  8. public class Main {
  9.     public static void main(String[] args) throws IOException {
  10.         Scanner scanner = new Scanner(System.in);
  11.  
  12.         Map<String, HashMap<Integer, Double>> test = new LinkedHashMap<>();
  13.  
  14.         String name = "Ivan";
  15.         int age = 20;
  16.         double grade = 4.5;
  17.         test.put(name, new HashMap<>());
  18.         test.get(name).put(age, grade);
  19.  
  20.         name = "Pesho";
  21.         age = 20;
  22.         grade = 5.64;
  23.         test.put(name, new HashMap<>());
  24.         test.get(name).put(age, grade);
  25.  
  26.         name = "Dragan";
  27.         age = 20;
  28.         grade = 3.27;
  29.         test.put(name, new HashMap<>());
  30.         test.get(name).put(age, grade);
  31.  
  32.         // Сортиране по възраст, ако са равни да се сортират по оценка ?
  33.         test.entrySet().stream()
  34.                 .sorted((person1, person2) -> {
  35.                     Map<Integer, Double> person1AgeGrade = person1.getValue();
  36.                     int person1Age = (int) person1AgeGrade.keySet().toArray()[0];
  37.                     Double person1Grade = (Double) person1AgeGrade.values().toArray()[0];
  38.  
  39.                     Map<Integer, Double> person2AgeGrade = person2.getValue();
  40.                     int person2Age = (int) person2AgeGrade.keySet().toArray()[0];
  41.                     Double person2Grade = (Double) person2AgeGrade.values().toArray()[0];
  42.  
  43.                     int ageComparisonResult = Integer.compare(person1Age, person2Age); // ascending
  44.                     if (ageComparisonResult != 0) {
  45.                         return ageComparisonResult;
  46.                     } else { //if equal
  47.                         return person2Grade.compareTo(person1Grade); //descending
  48.                     }
  49.                 }).forEach(sortedPerson -> {
  50.             String sortedPersonName = sortedPerson.getKey();
  51.  
  52.             Map<Integer, Double> sortedPersonAgeGrade = sortedPerson.getValue();
  53.             int sortedPersonAge = (int) sortedPersonAgeGrade.keySet().toArray()[0];
  54.             Double sortedPersonGrade = (Double) sortedPersonAgeGrade.values().toArray()[0];
  55.  
  56.             System.out.printf("Name: %s | Age: %d | Grade: %f%n", sortedPersonName, sortedPersonAge, sortedPersonGrade);
  57.         });
  58.     }
  59. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement