static <T> Iterator<T> fillObject(int n, T element) { if (n <= 0) { return Iterator.empty(); } else { return Iterator.continually(element).take(n); } }
@Override default List<T> leftPadTo(int length, T element) { final int actualLength = length(); if (length <= actualLength) { return this; } else { return prependAll(Iterator.continually(element).take(length - actualLength)); } }
@Override public LinkedHashSet<T> take(int n) { if (map.size() <= n) { return this; } return LinkedHashSet.ofAll(() -> iterator().take(n)); }
static <K, V, M extends Map<K, V>> M take(M map, OfEntries<K, V, M> ofEntries, int n) { if (n >= map.size()) { return map; } else { return ofEntries.apply(map.iterator().take(n)); } }
@Override public Array<T> padTo(int length, T element) { final int actualLength = length(); if (length <= actualLength) { return this; } else { return appendAll(Iterator.continually(element).take(length - actualLength)); } }
@Override public Array<T> leftPadTo(int length, T element) { final int actualLength = length(); if (length <= actualLength) { return this; } else { return prependAll(Iterator.continually(element).take(length - actualLength)); } }
@Override public Vector<T> padTo(int length, T element) { final int actualLength = length(); return (length <= actualLength) ? this : appendAll(Iterator.continually(element) .take(length - actualLength)); }
@Override default List<T> padTo(int length, T element) { final int actualLength = length(); if (length <= actualLength) { return this; } else { return appendAll(Iterator.continually(element).take(length - actualLength)); } }
@Override public Vector<T> leftPadTo(int length, T element) { if (length <= length()) { return this; } else { final Iterator<T> prefix = Iterator.continually(element).take(length - length()); return prependAll(prefix); } }
@Override public PriorityQueue<T> take(int n) { if (n >= size() || isEmpty()) { return this; } else if (n <= 0) { return empty(comparator); } else { return ofAll(comparator, iterator().take(n)); } }
@Override public HashSet<T> take(int n) { if (n >= size() || isEmpty()) { return this; } else if (n <= 0) { return empty(); } else { return ofAll(() -> iterator().take(n)); } }
@Override public BitSet<T> take(int n) { if (isEmpty() || n >= length()) { return this; } else if (n <= 0) { return createEmpty(); } else { return createFromAll(iterator().take(n)); } }
@Override @SuppressWarnings("unchecked") public M take(int n) { if (isEmpty() || n >= length()) { return (M) this; } else if (n <= 0) { return (M) this.emptyInstance(); } else { return (M) createFromEntries(iterator().take(n)); } }
@Override public TreeSet<T> take(int n) { if (n <= 0) { return empty(tree.comparator()); } else if (n >= length()) { return this; } else { return TreeSet.ofAll(tree.comparator(), iterator().take(n)); } }
static <K, V, M extends Map<K, V>> M take(M map, OfEntries<K, V, M> ofEntries, int n) { if (n >= map.size()) { return map; } else { return ofEntries.apply(map.iterator().take(n)); } }
@Override public Array<T> padTo(int length, T element) { final int actualLength = length(); if (length <= actualLength) { return this; } else { return appendAll(Iterator.continually(element).take(length - actualLength)); } }
@Override public Array<T> leftPadTo(int length, T element) { final int actualLength = length(); if (length <= actualLength) { return this; } else { return prependAll(Iterator.continually(element).take(length - actualLength)); } }
@Override public Vector<T> leftPadTo(int length, T element) { if (length <= length()) { return this; } else { final Iterator<T> prefix = Iterator.continually(element).take(length - length()); return prependAll(prefix); } }
@Override public BitSet<T> take(int n) { if (isEmpty() || n >= length()) { return this; } else if (n <= 0) { return createEmpty(); } else { return createFromAll(iterator().take(n)); } }
@Override public TreeSet<T> take(int n) { if (n <= 0) { return empty(tree.comparator()); } else if (n >= length()) { return this; } else { return TreeSet.ofAll(tree.comparator(), iterator().take(n)); } }