行业资讯 2025年08月6日
0 收藏 0 点赞 603 浏览 2400 个字
摘要 :

文章目录 1.使用Arrays.copyOfRange()创建子数组 2.使用Common Lang的ArrayUtils.subarray() 3.将子数组转换为List 本文主要以Java示例演示如何从数组中创建子数组,即……




  • 1.使用Arrays.copyOfRange()创建数组
  • 2.使用Common Lang的ArrayUtils.subarray()
  • 3.将子数组转换为List

本文主要以Java示例演示如何从数组中创建子数组,即创建数组切片。学习如何使用Java 8的Arrays.copyOfRange()方法,以及将子数组转换为List对象。

//快速参考
String[] names = {\"Alex\", \"Brian\", \"Charles\", \"David\"};
//Subarray from index \'0\' (inclusive) to index \'2\' (exclusive)
String[] partialNames = Arrays.copyOfRange(names, 0, 2);  // [Alex, Brian]
// Using Common Lang
String[] partialNames = ArrayUtils.subarray(names, 0, 2);    // [Alex, Brian]
//Subarray to List
List<String> namesList = Arrays.asList( Arrays.copyOfRange(names, 2, names.length) ); // [Charles, David]

1.使用Arrays.copyOfRange()创建子数组

copyOfRange()方法用于将指定数组的指定范围复制到新数组中。它接受3个参数 – 原始数组、初始索引和要复制的最终索引。

to 索引参数可以大于索引长度。在这种情况下,不会引发ArrayIndexOutOfBoundsException异常。

/**
* @param <T> the class of the objects in the array
* @param original the array from which a range is to be copied
* @param from the initial index of the range to be copied, inclusive
* @param to the final index of the range to be copied, exclusive.
*/
public static <T> T[] copyOfRange(T[] original, int from, int to) {
    return copyOfRange(original, from, to, (Class<? extends T[]>) original.getClass());
}

在下面的示例中,我们正在从不同长度的数组创建子数组。请注意,如果新数组的长度大于原始数组,则额外的数组位置将填充为数据类型的默认值。在给定的示例中,String类型的默认值是null,因此额外的数组位置被填充为null。

String[] names = {\"Alex\", \"Brian\", \"Charles\", \"David\"};
//从索引 \'0\' 开始,一直到第二个名字。
String[] partialNames = Arrays.copyOfRange(names, 0, 2);        // [Alex, Brian]
//从索引 \'2\' 复制所有名字。
String[] endNames = Arrays.copyOfRange(names, 2, names.length);    // [Charles, David]
//Copy last 8 names start with index \'2\'
//没有 ArrayIndexOutOfBoundsException异常
String[] moreNames = Arrays.copyOfRange(names, 2, 10);   // [Charles, David, null, null, null, null, null, null]

2.使用Common Lang的ArrayUtils.subarray()

ArrayUtils.subarray()方法返回一个包含给定数组中从起始索引(包括)到结束索引(不包括)的元素的数组。

该方法在处理其他错误情况时要灵活得多。例如:

  • 如果给定的数组为null,则该方法返回null。
  • 如果起始索引小于零,起始索引值将更改为零。
  • 在以下情况下,该方法返回一个空数组:
    • 起始索引大于数组的长度。
    • 结束索引小于起始索引。
  • 如果结束索引大于数组的长度,则结束索引值将更改为数组的长度。

要使用ArrayUtils.subarray()方法,请添加最新版本的Apache Common Lang依赖项从Maven仓库中获取。

<dependency>
    <groupId>org.apache.commons</groupId>
    <artifactId>commons-lang3</artifactId>
    <version>3.12.0</version>
</dependency>

以下是使用ArrayUtils.subarray()方法的示例。

String[] names = {\"Alex\", \"Brian\", \"Charles\", \"David\"};
String[] partialNames = ArrayUtils.subarray(names, 0, 2);        // [Alex, Brian]

3.将子数组转换为List

以下Java示例演示如何从子数组创建一个ArrayList。这可以分为两个步骤:

  • 从带有所需项目的数组创建子数组。
  • 将数组转换为List。
String[] names = {\"Alex\", \"Brian\", \"Charles\", \"David\"};
//Array to sublist
List<String> namesList = Arrays.asList( Arrays.copyOfRange(names, 0, 2) );  // [Alex, Brian]

以上就是如何在Java中创建子数组的全部内容,如果有任何问题,请在评论区留言。

微信扫一扫

支付宝扫一扫

版权: 转载请注明出处:https://www.zuozi.net/9293.html

管理员

相关推荐
2025-08-06

文章目录 一、Reader 接口概述 1.1 什么是 Reader 接口? 1.2 Reader 与 InputStream 的区别 1.3 …

988
2025-08-06

文章目录 一、事件溯源 (一)核心概念 (二)Kafka与Golang的优势 (三)完整代码实现 二、命令…

465
2025-08-06

文章目录 一、证明GC期间执行native函数的线程仍在运行 二、native线程操作Java对象的影响及处理方…

348
2025-08-06

文章目录 一、事务基础概念 二、MyBatis事务管理机制 (一)JDBC原生事务管理(JdbcTransaction)…

456
2025-08-06

文章目录 一、SnowFlake算法核心原理 二、SnowFlake算法工作流程详解 三、SnowFlake算法的Java代码…

517
2025-08-06

文章目录 一、本地Jar包的加载操作 二、本地Class的加载方法 三、远程Jar包的加载方式 你知道Groo…

832
发表评论
暂无评论

还没有评论呢,快来抢沙发~

助力内容变现

将您的收入提升到一个新的水平

点击联系客服

在线时间:08:00-23:00

客服QQ

122325244

客服电话

400-888-8888

客服邮箱

122325244@qq.com

扫描二维码

关注微信客服号