Java中subList的坑
java.util.List中有⼀个subList⽅法,⽤来返回⼀个list的⼀部分的视图。 之所以说是视图,是因为实际上,返回的list是靠原来的list⽀持的。
通过查看源代码我们可以看到subList返回的是⼀个new SubList()的对象,但是在该对象中保留了操作数组的引⽤,以及要需要读取的fromIndex,和 toIndex.
第⼀坑:
java中index是什么意思
1.通过对原List或者subList出来的List中的元素进⾏修改,那么两者会相互影响。即:修改他们中的任何⼀个都会影响另⼀个。
2.如果对原List进⾏元素的添加或者删除操作,那么会让⼦list语义上将会是undefined,在AbstractList(ArrayList的⽗类)
中,undefined的具体表现形式是抛出⼀个ConcurrentModificationException。
第⼆坑:
如果subList出来的List重新赋值给原List,那么这样会造成内存溢出。
List<String> list = new ArrayList();
for(int i=0;i<10000;i++){
list.add(i+"");
int endIndex = list.size() > 3 ?3 :list.size();
list = list.subList(0,endIndex);
}

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。