java.util.List.subList() 分段截取List列表

发布于:2021-05-15 09:22:43

List subList(int fromIndex, int toIndex)?
  返回列表中指定的 fromIndex(包括 )和 toIndex(不包括)之间的部分视图。(如果 fromIndex 和 toIndex 相等,则返回的列表为空)。?
  返回的列表由此列表(原列表)支持,所以,你对原来的list和返回的list做的“非结构性修改”(non-structural changes),都会影响到彼此对方。?


此方法省去了显式范围操作(此操作通常针对数组存在)。通过传递 subList 视图而非整个列表,期望列表的任何操作可用作范围操作。


  **例如,下面的语句从列表中移除了元素的范围:?
  list.subList(from, to).clear();**


  可以对 indexOf 和 lastIndexOf 构造类似的语句,而且 Collections 类中的所有算法都可以应用于 subList。


  如果支持列表(即此列表)通过任何其他方式(而不是通过返回的列表)从结构上修改,则此方法返回的列表语义将变为未定义(从结构上修改是指更改列表的大小,或者以其他方式打乱列表,使正在进行的迭代产生错误的结果)。


参数:?
  fromIndex - subList 的低端(包括)?
  toIndex - subList 的高端(不包括)?
返回:?
  列表中指定范围的视图?
抛出:?
  IndexOutOfBoundsException - 非法的端点值 ( fromIndex < 0 || toIndex > size || fromIndex > toIndex)


@Test
public void test9(){
List arr = new ArrayList<>();
for(int i=1;i <= 2100;i++ ){
arr.add(i);
}
int len = arr.size();
if(len > 1000){
int i = 0;
for(i=0;i< (int)((len-1)/1000);i++){
List list = arr.subList(i*1000, (i+1)*1000);
list.forEach(x->{
System.out.print(x+",");
});
System.out.println();
}
List list = arr.subList(i*1000, len);
list.forEach(x->{
System.out.print(x+",");
});
}else{
arr.forEach(System.out::print);
}

}

感谢小伙伴推荐这个更好用 :https://blog.csdn.net/itangcheng/article/details/113522892

相关推荐

最新更新

猜你喜欢