|
|
@@ -60,13 +60,13 @@ public abstract class VirtualList<T> extends AbstractList<T> implements RandomAc
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
- public Iterator<T> iterator() {
|
|
|
+ public final Iterator<T> iterator() {
|
|
|
return listIterator();
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
- public boolean containsAll(Collection<?> values) {
|
|
|
- // we don't use this.contains to avoid iteration over list many times
|
|
|
+ public final boolean containsAll(Collection<?> values) {
|
|
|
+ // we don't use this#contains to avoid iteration over list many times
|
|
|
Set<?> set = new HashSet<>(values);
|
|
|
ListIterator<? extends T> iterator = listIterator();
|
|
|
while(iterator.hasNext()) {
|
|
|
@@ -77,8 +77,8 @@ public abstract class VirtualList<T> extends AbstractList<T> implements RandomAc
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
- public boolean removeAll(Collection<?> values) {
|
|
|
- // we don't use this.remove to avoid iteration over list many times
|
|
|
+ public final boolean removeAll(Collection<?> values) {
|
|
|
+ // we don't use this#remove to avoid iteration over list many times
|
|
|
boolean modified = false;
|
|
|
Set<?> set = new HashSet<>(values);
|
|
|
ListIterator<? extends T> iterator = listIterator();
|
|
|
@@ -93,8 +93,8 @@ public abstract class VirtualList<T> extends AbstractList<T> implements RandomAc
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
- public boolean retainAll(Collection<?> values) {
|
|
|
- // we don't use this.remove&this.contains to avoid iteration over list many times
|
|
|
+ public final boolean retainAll(Collection<?> values) {
|
|
|
+ // we don't use this#remove & this#contains to avoid iteration over list many times
|
|
|
boolean modified = false;
|
|
|
Set<?> set = new HashSet<>(values);
|
|
|
ListIterator<? extends T> iterator = listIterator();
|
|
|
@@ -109,19 +109,19 @@ public abstract class VirtualList<T> extends AbstractList<T> implements RandomAc
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
- public ListIterator<T> listIterator() {
|
|
|
+ public final ListIterator<T> listIterator() {
|
|
|
// faster than default, but without concurrent "fail fast"
|
|
|
return new IIterator(0);
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
- public ListIterator<T> listIterator(int index) {
|
|
|
+ public final ListIterator<T> listIterator(int index) {
|
|
|
// faster than default, but without concurrent "fail fast"
|
|
|
return new IIterator(index);
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
- public List<T> subList(int begin, int end) {
|
|
|
+ public final List<T> subList(int begin, int end) {
|
|
|
// we use "our implementation" because we want to provide overriden #containsAll / #removeAll etc
|
|
|
return new SubList<>(this, begin, end);
|
|
|
}
|
|
|
@@ -160,6 +160,8 @@ public abstract class VirtualList<T> extends AbstractList<T> implements RandomAc
|
|
|
}
|
|
|
|
|
|
private static class SubList<Q> extends VirtualList<Q> {
|
|
|
+
|
|
|
+ private static final long serialVersionUID = 1L;
|
|
|
|
|
|
private final List<Q> list;
|
|
|
private final int begin;
|