static <K, V, M extends Map<K, V>> M takeRight(M map, OfEntries<K, V, M> ofEntries, int n) { if (n >= map.size()) { return map; } else { return ofEntries.apply(map.iterator().takeRight(n)); } }
@Override public LinkedHashSet<T> takeRight(int n) { if (map.size() <= n) { return this; } return LinkedHashSet.ofAll(() -> iterator().takeRight(n)); }
@Override public BitSet<T> takeRight(int n) { if (isEmpty() || n >= length()) { return this; } else if (n <= 0) { return createEmpty(); } else { return createFromAll(iterator().takeRight(n)); } }
@Override @SuppressWarnings("unchecked") public M takeRight(int n) { if (isEmpty() || n >= length()) { return (M) this; } else if (n <= 0) { return (M) this.emptyInstance(); } else { return (M) createFromEntries(iterator().takeRight(n)); } }
@Override public TreeSet<T> takeRight(int n) { if (n <= 0) { return empty(tree.comparator()); } else if (n >= length()) { return this; } else { return TreeSet.ofAll(tree.comparator(), iterator().takeRight(n)); } }
static <K, V, M extends Map<K, V>> M takeRight(M map, OfEntries<K, V, M> ofEntries, int n) { if (n >= map.size()) { return map; } else { return ofEntries.apply(map.iterator().takeRight(n)); } }
@Override public LinkedHashSet<T> takeRight(int n) { if (map.size() <= n) { return this; } return LinkedHashSet.ofAll(() -> iterator().takeRight(n)); }
@Override public BitSet<T> takeRight(int n) { if (isEmpty() || n >= length()) { return this; } else if (n <= 0) { return createEmpty(); } else { return createFromAll(iterator().takeRight(n)); } }
@Override @SuppressWarnings("unchecked") public M takeRight(int n) { if (isEmpty() || n >= length()) { return (M) this; } else if (n <= 0) { return (M) this.emptyInstance(); } else { return (M) createFromEntries(iterator().takeRight(n)); } }
@Override public TreeSet<T> takeRight(int n) { if (n <= 0) { return empty(tree.comparator()); } else if (n >= length()) { return this; } else { return TreeSet.ofAll(tree.comparator(), iterator().takeRight(n)); } }