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/documents/Notes.java | 11 +++----- .../zwobble/mammoth/internal/util/MammothMaps.java | 30 +++++++++++++++++++--- 2 files changed, 31 insertions(+), 10 deletions(-) (limited to 'src') diff --git a/src/main/java/org/zwobble/mammoth/internal/documents/Notes.java b/src/main/java/org/zwobble/mammoth/internal/documents/Notes.java index d7de8a6..fdfa814 100644 --- a/src/main/java/org/zwobble/mammoth/internal/documents/Notes.java +++ b/src/main/java/org/zwobble/mammoth/internal/documents/Notes.java @@ -1,14 +1,11 @@ package org.zwobble.mammoth.internal.documents; -import com.google.common.collect.Maps; -import com.google.common.collect.Multimaps; - import java.util.List; import java.util.Map; import java.util.Optional; import static org.zwobble.mammoth.internal.util.MammothLists.list; -import static org.zwobble.mammoth.internal.util.MammothMaps.lookup; +import static org.zwobble.mammoth.internal.util.MammothMaps.*; public class Notes { public final static Notes EMPTY = new Notes(list()); @@ -16,9 +13,9 @@ public class Notes { private final Map> notes; public Notes(List notes) { - this.notes = Maps.transformValues( - Multimaps.index(notes, Note::getNoteType).asMap(), - notesOfType -> Maps.uniqueIndex(notesOfType, Note::getId)); + this.notes = eagerMapValues( + toMultiMapWithKey(notes, Note::getNoteType), + notesOfType -> toMapWithKey(notesOfType, Note::getId)); } public Optional findNote(NoteType noteType, String noteId) { 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