Java如何使用ArrayList的subList方法获取包含最后一个元素的子列表
Java ArrayList截取从指定下标到末尾元素的正确实现
错误写法原因说明
- 第一种写法触发下标越界的核心原因是
subList方法的第二个参数必须小于等于列表总长度list.size(),你传入的index + list.size()远超过合法取值范围,因此抛出IndexOutOfBoundsException - 第二种写法编译不通过的原因是Java原生
List接口的subList方法不存在单参数重载,必须传入起始下标(包含)、结束下标(不包含)两个参数
正确实现方式
如果需要截取从startIndex开始、包含原列表最后一个元素的子列表,直接将第二个参数设置为list.size()即可:
// 返回的子列表包含startIndex位置元素,到原列表最后一个元素为止 List<T> subList = list.subList(startIndex, list.size());
注意事项
subList方法返回的是原列表的视图,不是独立的新列表,修改原列表或者子列表的内容会互相影响。如果需要得到独立的新ArrayList实例,可按如下写法转换:
ArrayList<T> independentSubList = new ArrayList<>(list.subList(startIndex, list.size()));
内容的提问来源于stack exchange,提问作者Tthis
相关产品推荐
相关产品推荐

