Java array substring

大憨熊 提交于 2019-12-05 20:13:43

问题


How can I create/instantiate an array to be equal to the substring of another array, where the size of the substring is unknown:

int n; //some number derived somewhere else

String[] grp = elements[i] to elements[i+n];

回答1:


Use Arrays.copyOfRange:

public static <T> T[] copyOfRange(T[] original,
                                  int from,
                                  int to)

Copies the specified range of the specified array into a new array. The initial index of the range (from) must lie between zero and original.length, inclusive. The value at original[from] is placed into the initial element of the copy (unless from == original.length or from == to). Values from subsequent elements in the original array are placed into subsequent elements in the copy. The final index of the range (to), which must be greater than or equal to from, may be greater than original.length, in which case null is placed in all elements of the copy whose index is greater than or equal to original.length - from. The length of the returned array will be to - from.

The resulting array is of exactly the same class as the original array.

In your case:

String[] grp = Arrays.copyOfRange(elements, i, i + n);



回答2:


You will use Arrays.copyOfRange().

Here is an example:

String[] original = some array;
String[] grp = Arrays.copyOfRange(original, i, i + n);

The Javadocs for the Arrays class has lots of information about the method:




回答3:


Use Arrays.copyOfRange():

String[] grp = Arrays.copyOfRange(grp, i, i+n);

As the name implies grp will be a copy of the original array and not a view into it. You can't have views into the array, for that you'd need to use a collection. Generally speaking collections are the more powerful and flexible, high-level alternative to arrays.




回答4:


To get the size of the array, you would do

String [] grp = new String[n + 1];//inclusive

Then, all you have to do is copy the elements over:

for(int x = 0;x < n + 1;x++)
{
    grp[x] = elements[i + x];//I'm assuming you have "i" defined somewhere
}


来源:https://stackoverflow.com/questions/6597557/java-array-substring

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!