From 56a29e5254b292dc98a9496672739e97f6b159d8 Mon Sep 17 00:00:00 2001 From: Michael Williamson Date: Sat, 26 Mar 2016 10:59:23 +0000 Subject: Add eagerMapKeys --- src/main/java/org/zwobble/mammoth/internal/util/MammothMaps.java | 8 ++++++++ .../java/org/zwobble/mammoth/internal/xml/parsing/XmlParser.java | 9 ++------- 2 files changed, 10 insertions(+), 7 deletions(-) (limited to 'src/main/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 873f90c..4ca3557 100644 --- a/src/main/java/org/zwobble/mammoth/internal/util/MammothMaps.java +++ b/src/main/java/org/zwobble/mammoth/internal/util/MammothMaps.java @@ -56,6 +56,14 @@ public class MammothMaps { return map; } + public static Map eagerMapKeys(Map map, Function function) { + Map result = new HashMap<>(); + for (Map.Entry element : map.entrySet()) { + result.put(function.apply(element.getKey()), element.getValue()); + } + return result; + } + public static Map eagerMapValues(Map map, Function function) { Map result = new HashMap<>(); for (Map.Entry element : map.entrySet()) { diff --git a/src/main/java/org/zwobble/mammoth/internal/xml/parsing/XmlParser.java b/src/main/java/org/zwobble/mammoth/internal/xml/parsing/XmlParser.java index 29aa02b..fdd3dff 100644 --- a/src/main/java/org/zwobble/mammoth/internal/xml/parsing/XmlParser.java +++ b/src/main/java/org/zwobble/mammoth/internal/xml/parsing/XmlParser.java @@ -9,7 +9,7 @@ import java.util.ArrayDeque; import java.util.Deque; import java.util.Map; -import static java.util.stream.Collectors.toMap; +import static org.zwobble.mammoth.internal.util.MammothMaps.eagerMapKeys; import static org.zwobble.mammoth.internal.util.MammothMaps.lookup; import static org.zwobble.mammoth.internal.util.MammothStrings.isNullOrEmpty; @@ -45,12 +45,7 @@ public class XmlParser { @Override public void startElement(ElementName name, Map attributes) { - Map simpleAttributes = attributes - .entrySet() - .stream() - .collect(toMap( - entry -> readName(entry.getKey()), - entry -> entry.getValue())); + Map simpleAttributes = eagerMapKeys(attributes, this::readName); XmlElementBuilder element = new XmlElementBuilder(readName(name), simpleAttributes); elementStack.add(element); } -- cgit v1.2.3