用AI赚第一桶💰低成本搭建一套AI赚钱工具,源码可二开。 广告
| 函数 | 描述 | | --- | --- | | public List<E> subList(int fromIndex, int toIndex) | Returns a view of the portion of this list between the specified {fromIndex}, inclusive, and {toIndex}, exclusive. (If `{fromIndex}` and `{toIndex}` are equal, the returned list is empty.) The returned list is backed by this list, so non-structural changes in the returned list are reflected in this list, and vice-versa. The returned list supports all of the optional list operations. <br>[a, b, c, d, e] ;<br>subList(1,4);<br>return=>[b,c,d]| #SubList public List<E> subList(int fromIndex, int toIndex) ``` private class SubList extends AbstractList<E> implements RandomAccess { private final AbstractList<E> parent; private final int parentOffset; private final int offset; int size; SubList(AbstractList<E> parent, int offset, int fromIndex, int toIndex) { this.parent = parent; this.parentOffset = fromIndex; this.offset = offset + fromIndex; this.size = toIndex - fromIndex; this.modCount = ArrayList.this.modCount; } public E set(int index, E e) { rangeCheck(index); checkForComodification(); E oldValue = ArrayList.this.elementData(offset + index); ArrayList.this.elementData[offset + index] = e; return oldValue; } public E get(int index) { rangeCheck(index); checkForComodification(); return ArrayList.this.elementData(offset + index); } public int size() { checkForComodification(); return this.size; } public void add(int index, E e) { rangeCheckForAdd(index); checkForComodification(); parent.add(parentOffset + index, e);//--------------->注意 this.modCount = parent.modCount; this.size++; } public E remove(int index) { rangeCheck(index); checkForComodification(); E result = parent.remove(parentOffset + index);//--------------->注意 this.modCount = parent.modCount; this.size--; return result; } ``` 可以看出SubList这个类其实就是使用的传进来的ArrayList parent进行添加和删除操作,并没有重新复制一份,所以其产生的影响会对原来的list产生影响。