diff --git a/pom.xml b/pom.xml index d10e176b4c..cffd1a99f7 100644 --- a/pom.xml +++ b/pom.xml @@ -88,19 +88,15 @@ 2.3.3_r2 - java.util.function.Consumer - java.util.function.Supplier + java.util.function.* + java.util.stream.* java.lang.ThreadLocal java.io.UncheckedIOException - java.util.function.Predicate - java.util.function.UnaryOperator - java.util.stream.Stream - java.util.stream.StreamSupport + java.util.List + java.util.Objects + java.util.Optional java.util.Spliterator java.util.Spliterators - java.util.Optional - java.util.stream.Collector - java.util.stream.Collectors java.net.HttpURLConnection diff --git a/src/main/java/org/jsoup/nodes/Element.java b/src/main/java/org/jsoup/nodes/Element.java index 0193af0a50..0a63d73bf8 100644 --- a/src/main/java/org/jsoup/nodes/Element.java +++ b/src/main/java/org/jsoup/nodes/Element.java @@ -30,6 +30,7 @@ import java.util.function.Consumer; import java.util.regex.Pattern; import java.util.regex.PatternSyntaxException; +import java.util.stream.Collectors; import java.util.stream.Stream; import static org.jsoup.internal.Normalizer.normalize; @@ -411,6 +412,13 @@ public Stream stream() { return NodeUtils.stream(this, Element.class); } + private List filterNodes(Class clazz) { + return childNodes.stream() + .filter(clazz::isInstance) + .map(clazz::cast) + .collect(Collectors.collectingAndThen(Collectors.toList(), Collections::unmodifiableList)); + } + /** * Get this element's child text nodes. The list is unmodifiable but the text nodes may be manipulated. *

@@ -428,12 +436,7 @@ public Stream stream() { * */ public List textNodes() { - List textNodes = new ArrayList<>(); - for (Node node : childNodes) { - if (node instanceof TextNode) - textNodes.add((TextNode) node); - } - return Collections.unmodifiableList(textNodes); + return filterNodes(TextNode.class); } /** @@ -446,12 +449,7 @@ public List textNodes() { * @see #data() */ public List dataNodes() { - List dataNodes = new ArrayList<>(); - for (Node node : childNodes) { - if (node instanceof DataNode) - dataNodes.add((DataNode) node); - } - return Collections.unmodifiableList(dataNodes); + return filterNodes(DataNode.class); } /**