我在Java中有一个Integers数组,我只想使用它的一部分。我知道在Python中你可以做类似这个数组[index:]的东西,它从索引中返回数组。这样的事情在Java中是可能的。
答案 0 :(得分:368)
使用java.util.Arrays课程中的copyOfRange
方法:
int[] newArray = Arrays.copyOfRange(oldArray, startIndex, endIndex);
startIndex 是要复制的范围的初始索引(包括) endIndex 是要复制的范围的最终索引,不包括。 (该索引可能位于数组之外)
E.g:
//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)
答案 1 :(得分:30)
您可以将数组包装为列表,并请求它的子列表。
MyClass[] array = ...;
List<MyClass> subArray = Arrays.asList(array).subList(index, array.length);
答案 2 :(得分:22)
是的,您可以使用Arrays.copyOfRange
它做同样的事情(注意有一个副本:你不改变初始数组)。
答案 3 :(得分:7)
如果您使用的是Java 1.6或更高版本,则可以使用Arrays.copyOfRange
复制数组的一部分。来自javadoc:
将指定数组的指定范围复制到新数组中。范围(from)的初始索引必须介于0和
original.length
之间,包括0和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]); } }
。
{{1}}
答案 4 :(得分:3)
查看copyOfRange;例如:
int[] arr2 = Arrays.copyOfRange(arr,0,3);
答案 5 :(得分:1)
您可以使用以下内容:Arrays#copyOfRange
答案 6 :(得分:0)
Arrays.copyOfRange(array,from,to);
输入参数&#39;到&#39;包容性。因此,在您的代码中,添加一个&#39; +1值以解决您的问题。
答案 7 :(得分:0)
public static int[] range(int[] array, int start, int end){
int returner[] = new int[end-start];
for(int x = 0; x <= end-start-1; x++){
returner[x] = array[x+start];
}
return returner;
}
这是一种与Array.copyOfRange相同的方法,但不导入任何内容
答案 8 :(得分:-1)
您可以在整数arr上使用subList(int fromIndex, int toIndex)
方法,如下所示:
import java.util.ArrayList;
import java.util.List;
public class Main {
public static void main(String[] args) {
List<Integer> arr = new ArrayList<>();
arr.add(1);
arr.add(2);
arr.add(3);
arr.add(4);
List<Integer> partialArr = arr.subList(1, 3);
// print the subArr
for (Integer i: partialArr)
System.out.println(i + " ");
}
}
输出将为:2 3
。
请注意,subList(int fromIndex, int toIndex)
方法在它收到的第二个变量(变量2-1)上执行负1,我不知道为什么,但这是发生了什么,也许是为了减少超过数组。