Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package fr.edu.grenoble.sconet.common.util;
- import java.util.LinkedHashMap;
- import java.util.Map;
- import lombok.AccessLevel;
- import lombok.AllArgsConstructor;
- import lombok.EqualsAndHashCode;
- import lombok.Getter;
- import lombok.NoArgsConstructor;
- @NoArgsConstructor(access = AccessLevel.NONE)
- public final class MapUtils {
- public static <A extends Comparable<A>, B extends Comparable<B>> Map<A, B> trierMap(
- final Map<A, B> mapATrier) {
- @AllArgsConstructor
- @EqualsAndHashCode(of = {"a", "b"})
- @Getter
- class ComparableMapEntry<C extends A, D extends B>
- implements Comparable<ComparableMapEntry<C, D>> {
- private final C a;
- private final D b;
- public ComparableMapEntry(final Map.Entry<C, D> mapEntry) {
- this(mapEntry.getKey(), mapEntry.getValue());
- }
- @Override
- public int compareTo(final ComparableMapEntry<C, D> o) {
- int compareResult = this.getA().compareTo(o.getA());
- if (compareResult == 0) {
- return this.getB().compareTo(o.getB());
- }
- return compareResult;
- }
- }
- return mapATrier.entrySet()
- .stream()
- .map(ComparableMapEntry::new)
- .sorted()
- .collect(LinkedHashMap::new, (final Map<A, B> map,
- final ComparableMapEntry<A, B> entry) -> map.put(entry.getA(), entry.getB()),
- Map::putAll);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement