Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.io.IOException;
- import java.util.HashMap;
- import java.util.LinkedHashMap;
- import java.util.Map;
- import java.util.Scanner;
- public class Main {
- public static void main(String[] args) throws IOException {
- Scanner scanner = new Scanner(System.in);
- Map<String, HashMap<Integer, Double>> test = new LinkedHashMap<>();
- String name = "Ivan";
- int age = 20;
- double grade = 4.5;
- test.put(name, new HashMap<>());
- test.get(name).put(age, grade);
- name = "Pesho";
- age = 20;
- grade = 5.64;
- test.put(name, new HashMap<>());
- test.get(name).put(age, grade);
- name = "Dragan";
- age = 20;
- grade = 3.27;
- test.put(name, new HashMap<>());
- test.get(name).put(age, grade);
- // Сортиране по възраст, ако са равни да се сортират по оценка ?
- test.entrySet().stream()
- .sorted((person1, person2) -> {
- Map<Integer, Double> person1AgeGrade = person1.getValue();
- int person1Age = (int) person1AgeGrade.keySet().toArray()[0];
- Double person1Grade = (Double) person1AgeGrade.values().toArray()[0];
- Map<Integer, Double> person2AgeGrade = person2.getValue();
- int person2Age = (int) person2AgeGrade.keySet().toArray()[0];
- Double person2Grade = (Double) person2AgeGrade.values().toArray()[0];
- int ageComparisonResult = Integer.compare(person1Age, person2Age); // ascending
- if (ageComparisonResult != 0) {
- return ageComparisonResult;
- } else { //if equal
- return person2Grade.compareTo(person1Grade); //descending
- }
- }).forEach(sortedPerson -> {
- String sortedPersonName = sortedPerson.getKey();
- Map<Integer, Double> sortedPersonAgeGrade = sortedPerson.getValue();
- int sortedPersonAge = (int) sortedPersonAgeGrade.keySet().toArray()[0];
- Double sortedPersonGrade = (Double) sortedPersonAgeGrade.values().toArray()[0];
- System.out.printf("Name: %s | Age: %d | Grade: %f%n", sortedPersonName, sortedPersonAge, sortedPersonGrade);
- });
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement