Java数组子字符串
如何创建/实例化一个数组,使其等于另一个数组的子字符串,其中子字符串的大小未知:
int n; //some number derived somewhere else String[] grp = elements[i] to elements[i+n];
使用Arrays.copyOfRange
:
public static T[] copyOfRange(T[] original, int from, int to)
将指定数组的指定范围复制到新数组中。 范围(
from
)的初始索引必须介于0和original.length
之间(包括0和original.length
)。original[from]
的值被放入副本的初始元素中(除非from == original.length
或from == to
)。 原始数组中后续元素的值将放入副本中的后续元素中。 范围(to
)的最终索引(必须大于或等于from)可能大于original.length
,在这种情况下,null将被放置在索引大于或等于original.length - from
的副本的所有元素中original.length - from
。 返回数组的长度to - from
。生成的数组与原始数组完全相同。
在你的情况下:
String[] grp = Arrays.copyOfRange(elements, i, i + n);
您将使用Arrays.copyOfRange()
。
这是一个例子:
String[] original = some array; String[] grp = Arrays.copyOfRange(original, i, i + n);
Arrays
类的Javadocs有很多关于该方法的信息:
使用Arrays.copyOfRange()
:
String[] grp = Arrays.copyOfRange(grp, i, i+n);
顾名思义, grp
将是原始数组的副本 ,而不是视图。 您无法查看数组,因为您需要使用集合 。 一般而言,集合是arrays的更强大,更灵活,更高级别的替代品。
要获得数组的大小,你会这样做
String [] grp = new String[n + 1];//inclusive
然后,您所要做的就是复制元素:
for(int x = 0;x < n + 1;x++) { grp[x] = elements[i + x];//I'm assuming you have "i" defined somewhere }