如何创建/实例化一个数组,使其等于另一个数组的子字符串,其中子字符串的大小未知:
int n; //some number derived somewhere else
String[] grp = elements[i] to elements[i+n];
答案 0 :(得分:14)
public static <T> T[] copyOfRange(T[] original,
int from,
int to)
复制指定的范围 将指定的数组转换为新数组。该 范围的初始索引(
from
)必须 介于零和original.length
之间, 包括的。original[from]
的值 放在初始元素中 副本(除非from == original.length
或from == to
)。值 从后来的元素 原始数组被放入 副本中的后续元素。该 范围的最终索引(to
),其中 必须大于或等于, 可能大于original.length
, 在这种情况下,null放在所有 索引为的副本的元素 大于或等于original.length - from
。的长度 返回的数组将是to - from
。得到的数组恰好是 与原始数组相同的类。
在你的情况下:
String[] grp = Arrays.copyOfRange(elements, i, i + n);
答案 1 :(得分:8)
您将使用Arrays.copyOfRange()
。
以下是一个例子:
String[] original = some array;
String[] grp = Arrays.copyOfRange(original, i, i + n);
Arrays
类的Javadocs有很多关于该方法的信息:
答案 2 :(得分:3)
String[] grp = Arrays.copyOfRange(grp, i, i+n);
顾名思义grp
将是原始数组的副本而不是视图。您无法查看数组,因为您需要使用collection。一般而言,集合是数组的更强大,更灵活,更高级别的替代方案。
答案 3 :(得分:1)
要获得数组的大小,你可以
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
}