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.lengthfrom == 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 }