java 数组 取部分_在Java中只获取一部分数组?

在Java中只获取一部分数组?

我在Java中有一个Integers数组,我只想使用它的一部分。 我知道在Python中你可以做类似这个数组[index:]的东西,它从索引中返回数组。 这样的事情在Java中是可能的。

Borut Flis asked 2019-03-24T12:54:11Z

8个解决方案

318 votes

使用java.util.Arrays类中的copyOfRange方法:

int[] newArray = Arrays.copyOfRange(oldArray, startIndex, endIndex);

startIndex是要复制的范围的初始索引(包括)。

endIndex是要复制的范围的最终索引,不包括。 (此索引可能位于数组之外)

例如。:

//index 0 1 2 3 4

int[] arr = {10, 20, 30, 40, 50};

Arrays.copyOfRange(arr, 0, 2); // returns {10, 20}

Arrays.copyOfRange(arr, 1, 4); // returns {20, 30, 40}

Arrays.copyOfRange(arr, 2, arr.length); // returns {30, 40, 50} (length = 5)

elias answered 2019-03-24T12:54:56Z

26 votes

您可以将数组包装为列表,并请求它的子列表。

MyClass[] array = ...;

List subArray = Arrays.asList(array).subList(index, array.length);

K-ballo answered 2019-03-24T12:55:25Z

20 votes

是的,您可以使用Arrays.copyOfRange

它做了同样的事情(注意有一个副本:你不改变初始数组)。

Denys Séguret answered 2019-03-24T12:56:07Z

7 votes

如果您使用的是Java 1.6或更高版本,则可以使用Arrays.copyOfRange复制阵列的一部分。 来自javadoc:

将指定数组的指定范围复制到新数组中。 范围(from)的初始索引必须介于0和original.length之间(包括端点)。 original[from]的值放入副本的初始元素中(除非from == original.length或from == to)。 原始数组中后续元素的值将放入副本中的后续元素中。 范围的最终索引(to)必须大于或等于from,可能大于original.length,在这种情况下,false被放置在索引大于或等于original.length - from的副本的所有元素中。 返回的数组将是to - from。

这是一个简单的例子:

/**

* @Program that Copies the specified range of the specified array into a new

* array.

* CopyofRange8Array.java

* Author:-RoseIndia Team

* Date:-15-May-2008

*/

import java.util.*;

public class CopyofRange8Array {

public static void main(String[] args) {

//creating a short array

Object T[]={"Rose","India","Net","Limited","Rohini"};

// //Copies the specified short array upto specified range,

Object T1[] = Arrays.copyOfRange(T, 1,5);

for (int i = 0; i < T1.length; i++)

//Displaying the Copied short array upto specified range

System.out.println(T1[i]);

}

}

Justin Ethier answered 2019-03-24T12:57:09Z

3 votes

你可以试试:

System.arraycopy(sourceArray, 0, targetArray, 0, targetArray.length);// copies whole array

// copies elements 1 and 2 from sourceArray to targetArray

System.arraycopy(sourceArray, 1, targetArray, 0, 2);

请参阅javadoc for System。

StvnBrkdll answered 2019-03-24T12:57:53Z

3 votes

看看copyOfRange; 和例子:

int[] arr2 = Arrays.copyOfRange(arr,0,3);

dcp answered 2019-03-24T12:58:39Z

1 votes

你可以使用这样的东西:Arrays#copyOfRange

CBredlow answered 2019-03-24T12:59:13Z

0 votes

Arrays.copyOfRange(array,from,to);

输入参数'to'是包含的。 所以在你的代码中,添加一个'到'+ 1值来修复你的问题。

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值