From 0deccc08a51e68eb97ad6ef5a95bfd868a939169 Mon Sep 17 00:00:00 2001 From: Michael Williamson Date: Fri, 25 Mar 2016 16:43:24 +0000 Subject: Remove use of Google collections in Notes --- .../zwobble/mammoth/internal/util/MammothMaps.java | 30 +++++++++++++++++++--- 1 file changed, 27 insertions(+), 3 deletions(-) (limited to 'src/main/java/org/zwobble/mammoth/internal/util/MammothMaps.java') diff --git a/src/main/java/org/zwobble/mammoth/internal/util/MammothMaps.java b/src/main/java/org/zwobble/mammoth/internal/util/MammothMaps.java index 19fbfc4..873f90c 100644 --- a/src/main/java/org/zwobble/mammoth/internal/util/MammothMaps.java +++ b/src/main/java/org/zwobble/mammoth/internal/util/MammothMaps.java @@ -2,9 +2,7 @@ package org.zwobble.mammoth.internal.util; import com.google.common.collect.ImmutableMap; -import java.util.AbstractMap; -import java.util.Map; -import java.util.Optional; +import java.util.*; import java.util.function.Function; public class MammothMaps { @@ -32,6 +30,10 @@ public class MammothMaps { return Optional.ofNullable(map.get(key)); } + public static Map toMapWithKey(Iterable iterable, Function function) { + return toMap(iterable, element -> entry(function.apply(element), element)); + } + public static Map toMap(Iterable iterable, Function> function) { ImmutableMap.Builder builder = ImmutableMap.builder(); for (T element : iterable) { @@ -39,4 +41,26 @@ public class MammothMaps { } return builder.build(); } + + public static Map> toMultiMapWithKey(Iterable iterable, Function function) { + return toMultiMap(iterable, element -> entry(function.apply(element), element)); + } + + public static Map> toMultiMap(Iterable iterable, Function> function) { + Map> map = new HashMap<>(); + for (T element : iterable) { + Map.Entry pair = function.apply(element); + map.computeIfAbsent(pair.getKey(), key -> new ArrayList()) + .add(pair.getValue()); + } + return map; + } + + public static Map eagerMapValues(Map map, Function function) { + Map result = new HashMap<>(); + for (Map.Entry element : map.entrySet()) { + result.put(element.getKey(), function.apply(element.getValue())); + } + return result; + } } -- cgit v1.2.3