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

如何使用Java 8更简便实现按指定位置拆分列表获取分区数据

Java 8 列表固定间隔分区实现方案

你可以通过Java 8提供的流API简化代码,无需手动编写循环和边界判断,实现效果和你原有代码完全一致:

import java.util.ArrayList;
import java.util.List;
import java.util.stream.IntStream;

public class PartitionTest {
    public static void main(String[] args) {
        int position = 2;
        List<String> arrlist = new ArrayList<>();
        arrlist.add("A");
        arrlist.add("B");
        arrlist.add("C");
        arrlist.add("D");
        arrlist.add("E");

        System.out.println("Original arrlist: " + arrlist);
        // 核心分区逻辑
        IntStream.rangeClosed(0, (arrlist.size() - 1) / position)
                .mapToObj(i -> arrlist.subList(
                        i * position,
                        Math.min((i + 1) * position, arrlist.size())
                ))
                .forEach(sublist -> System.out.println("Sublist of arrlist: " + sublist));
    }
}

运行输出和你给出的结果完全相同:

Original arrlist: [A, B, C, D, E]
Sublist of arrlist: [A, B]
Sublist of arrlist: [C, D]
Sublist of arrlist: [E]

注意事项

List.subList()返回的是原列表的视图,修改子列表会同步影响原列表。如果需要得到完全独立的子列表,可以调整分区逻辑,把每个子列表转为新的独立集合:

// 需引入java.util.stream.Collectors
.mapToObj(i -> arrlist.subList(i * position, Math.min((i + 1) * position, arrlist.size()))
        .stream()
        .collect(Collectors.toList())
)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.12 11:21:00