@Override default Seq<T> take(int n) { if (isEmpty()) { return Stream.empty(); } else { return values().take(n); } }
@SuppressWarnings("unchecked") @Override public void clear() { // DEV-NOTE: acts like Java: works for empty immutable collections if (isEmpty()) { return; } setDelegate(() -> (C) getDelegate().take(0)); }
@SuppressWarnings("unchecked") static <T, C extends Seq<T>> C rotateLeft(C source, int n) { if (source.isEmpty() || n == 0) { return source; } else if (n < 0) { return rotateRight(source, -n); } else { int len = source.length(); int m = n % len; if (m == 0) { return source; } else { return (C) source.drop(m).appendAll(source.take(m)); } } }
@Override default Seq<T> take(int n) { if (isEmpty()) { return Stream.empty(); } else { return values().take(n); } }
@SuppressWarnings("unchecked") @Override public void clear() { // DEV-NOTE: acts like Java: works for empty immutable collections if (isEmpty()) { return; } setDelegate(() -> (C) getDelegate().take(0)); }
@SuppressWarnings("unchecked") static <T, C extends Seq<T>> C rotateLeft(C source, int n) { if (source.isEmpty() || n == 0) { return source; } else if (n < 0) { return rotateRight(source, -n); } else { int len = source.length(); int m = n % len; if (m == 0) { return source; } else { return (C) source.drop(m).appendAll(source.take(m)); } } }