You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ArrayList的subList方法使用疑问:为何截取后仍输出完整列表?

解决ArrayList subList方法使用问题

核心问题

subList方法不会修改原列表,它返回的是原列表指定范围的视图对象。你之前的代码仅调用了subList但未保存返回结果,遍历原priceList自然还是完整数据。

正确用法

1. 直接使用subList返回的视图

将subList的返回值赋值给新变量,遍历这个变量即可得到目标子列表:

int[] prices = {71,11,65,99,21,82};
List<Integer> priceList = Arrays.stream(prices).boxed().collect(Collectors.toList());
// 保存subList的返回结果
List<Integer> subList = priceList.subList(3, priceList.size());
// 遍历子列表
for (Integer price : subList) {
    System.out.println(price); // 输出:99、21、82
}

2. 创建独立的子列表(与原列表解耦)

如果需要子列表不受原列表后续修改的影响,可以把subList的结果转成新的ArrayList:

List<Integer> independentSubList = new ArrayList<>(priceList.subList(3, priceList.size()));

补充说明

即使你把priceList初始化为new ArrayList<>(Arrays.stream(...)),原列表和subList返回的视图仍是关联的,但核心问题还是你没有使用subList的返回值——原列表本身不会因为调用subList而被截断。

内容的提问来源于stack exchange,提问作者user3153356

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.22 08:34:50