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

Java如何实现类似Python arr[:N]的截取数组前N个元素功能

Java实现类似Python数组切片的无自定义循环方案

原生JDK实现(无需引入第三方依赖)

  • 针对基础类型数组(如int[]、String[])
    使用java.util.Arrays.copyOfRange即可直接实现切片,示例代码:
import java.util.Arrays;

int[] arr = {1, 2, 3, 4, 5};
// 参数说明:copyOfRange(原数组, 起始下标(包含), 结束下标(不包含))
int[] slicedArr = Arrays.copyOfRange(arr, 0, 3); // 输出结果为 [1,2,3]
  • 针对List集合
    使用subList方法实现:
import java.util.Arrays;
import java.util.List;

List<Integer> list = Arrays.asList(1, 2, 3, 4, 5);
List<Integer> slicedList = list.subList(0, 3); // 输出结果为 [1,2,3]

注意:subList返回的是原List的视图,修改原List会同步影响切片结果,如果需要独立的新集合,可改为new ArrayList<>(list.subList(0, 3))

第三方工具包实现(简化操作,更贴合Python使用习惯)

如果项目中已经引入常用工具包,可以用更简洁的API:

  • Apache Commons Lang 提供的ArrayUtils:支持负下标,和Python切片逻辑更接近
import org.apache.commons.lang3.ArrayUtils;

int[] arr = {1, 2, 3, 4, 5};
int[] slicedArr = ArrayUtils.subarray(arr, 0, 3); // 同样得到 [1,2,3]
// 支持负下标,例如取倒数3个元素:ArrayUtils.subarray(arr, -3, arr.length)
  • Guava 提供的基础类型工具类:
import com.google.common.primitives.Ints;

int[] arr = {1, 2, 3, 4, 5};
List<Integer> slicedList = Ints.asList(arr).subList(0, 3);

以上所有方案都不需要手动编写循环逻辑,底层实现已经由JDK或工具包封装完成。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 21:06:03