diff --git a/core-java-collections/src/main/java/com/baeldung/sort/SortHashMap.java b/core-java-collections/src/main/java/com/baeldung/sort/SortHashMap.java index 6adb2ee120..938f740e9a 100644 --- a/core-java-collections/src/main/java/com/baeldung/sort/SortHashMap.java +++ b/core-java-collections/src/main/java/com/baeldung/sort/SortHashMap.java @@ -1,8 +1,11 @@ package com.baeldung.sort; import com.baeldung.performance.Employee; +import com.google.common.collect.Lists; +import com.google.common.collect.Ordering; import java.util.*; +import java.util.stream.Collectors; public class SortHashMap { @@ -20,13 +23,36 @@ public class SortHashMap { //treeSetByKey(); //treeSetByValue(); - sortStream(); + //sortStream(); + + sortGuava(); + } + + private static void sortGuava() { + Ordering> orderById = new Ordering>() { + @Override + public int compare(Map.Entry left, Map.Entry right) { + return left.getValue().getId().compareTo(right.getValue().getId()); + } + }; + + List> toList = Lists.newArrayList(map.entrySet()); + Collections.sort(toList, orderById); + + toList.forEach(System.out::println); } private static void sortStream() { map.entrySet().stream() .sorted(Map.Entry.comparingByKey().reversed()) .forEach(System.out::println); + + Map result = map.entrySet().stream() + .sorted(Comparator.comparingLong(e -> e.getValue().getId())) + .collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue, + (oldValue, newValue) -> oldValue, LinkedHashMap::new)); + + result.entrySet().forEach(System.out::println); } private static void treeSetByValue() {