@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);
+ return Spliterators.spliterator(map.immutableIterator(), Long.MAX_VALUE, characteristics());
}
+
+ abstract int characteristics();
}
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);
+ spliteratorCharacteristics());
}
+
+ abstract int spliteratorCharacteristics();
}
import java.util.Collection;
import java.util.Iterator;
import java.util.Map.Entry;
+import java.util.Spliterator;
/**
* {@link AbstractEntrySet} implementation guarding against attempts to mutate the underlying map.
public boolean retainAll(final Collection<?> c) {
throw unsupported();
}
+
+ @Override
+ int characteristics() {
+ return Spliterator.DISTINCT | Spliterator.IMMUTABLE | Spliterator.NONNULL;
+ }
}
import java.util.Collection;
import java.util.Iterator;
import java.util.Map.Entry;
+import java.util.Spliterator;
/**
* An immutable view of a TrieMap's key set.
public boolean removeAll(final Collection<?> c) {
throw unsupported();
}
+
+ @Override
+ int spliteratorCharacteristics() {
+ return Spliterator.DISTINCT | Spliterator.IMMUTABLE | Spliterator.NONNULL;
+ }
}
import java.util.Iterator;
import java.util.Map.Entry;
+import java.util.Spliterator;
/**
* Support for EntrySet operations required by the Map interface.
return map().remove(key, value);
}
+
+ @Override
+ int characteristics() {
+ return Spliterator.DISTINCT | Spliterator.CONCURRENT | Spliterator.NONNULL;
+ }
}
package org.opendaylight.yangtools.triemap;
import java.util.Iterator;
+import java.util.Spliterator;
/**
* A mutable view of a TrieMap's key set.
public boolean remove(final Object o) {
return map().remove(o) != null;
}
+
+ @Override
+ int spliteratorCharacteristics() {
+ return Spliterator.DISTINCT | Spliterator.CONCURRENT | Spliterator.NONNULL;
+ }
}