/** * Gets an empty ordered iterator. * <p> * This iterator is a valid iterator object that will iterate * over nothing. * * @param <E> the element type * @return an ordered iterator over nothing */ public static <E> OrderedIterator<E> emptyOrderedIterator() { return EmptyOrderedIterator.<E>emptyOrderedIterator(); }
/** * Creates a values iterator. * Subclasses can override this to return iterators with different properties. * * @return the values iterator */ @Override protected Iterator<V> createValuesIterator() { if (size() == 0) { return EmptyOrderedIterator.<V>emptyOrderedIterator(); } return new ValuesIterator<>(this); }
/** * Creates an entry set iterator. * Subclasses can override this to return iterators with different properties. * * @return the entrySet iterator */ @Override protected Iterator<Map.Entry<K, V>> createEntrySetIterator() { if (size() == 0) { return EmptyOrderedIterator.<Map.Entry<K, V>>emptyOrderedIterator(); } return new EntrySetIterator<>(this); }
/** * Creates a key set iterator. * Subclasses can override this to return iterators with different properties. * * @return the keySet iterator */ @Override protected Iterator<K> createKeySetIterator() { if (size() == 0) { return EmptyOrderedIterator.<K>emptyOrderedIterator(); } return new KeySetIterator<>(this); }