如何在Java中创建子数组

培训教学 潘老师 7个月前 (09-24) 165 ℃ (0) 扫码查看

本文主要以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.panziye.com/teach/9253.html
喜欢 (0)
请潘老师喝杯Coffee吧!】
分享 (0)
用户头像
发表我的评论
取消评论
表情 贴图 签到 代码

Hi,您需要填写昵称和邮箱!

  • 昵称【必填】
  • 邮箱【必填】
  • 网址【可选】