import java.util.AbstractSet;
import java.util.Map.Entry;
+import java.util.Spliterator;
+import java.util.Spliterators;
/**
* Abstract base class for implementing {@link TrieMap} entry sets.
public final int size() {
return map.size();
}
+
+ @Override
+ public final Spliterator<Entry<K, V>> spliterator() {
+ // TODO: this is backed by an Iterator, we should be able to do better
+ return Spliterators.spliterator(map.immutableIterator(), Long.MAX_VALUE,
+ // XXX: Distinct as far as associated Equivalence allows
+ Spliterator.DISTINCT | Spliterator.IMMUTABLE | Spliterator.NONNULL);
+ }
}
import static java.util.Objects.requireNonNull;
+import com.google.common.collect.Iterators;
import java.util.AbstractSet;
import java.util.Collection;
+import java.util.Map.Entry;
+import java.util.Spliterator;
+import java.util.Spliterators;
/**
* Abstract base class for key set views of a TrieMap.
public final int size() {
return map.size();
}
+
+ @Override
+ public final Spliterator<K> spliterator() {
+ // TODO: this is backed by an Iterator, we should be able to do better
+ return Spliterators.spliterator(Iterators.transform(map().immutableIterator(), Entry::getKey), Long.MAX_VALUE,
+ // XXX: Distinct as far as associated Equivalence allows
+ Spliterator.DISTINCT | Spliterator.IMMUTABLE | Spliterator.NONNULL);
+ }
}