[英]Java - How do I split an array into four separate arrays?
我有一个包含数字字符串的数组,例如:1011
我想将其分成四个单独的数组,其中包含每个值。 我该怎么做呢?
String [] array = {1,0,1,1};
//would I do something like this:
array.substring(0,4)
您应该可以使用Arrays.copyOfRange(...)来执行此操作。
选项1是为您拥有的数组中的每个项目简单地创建一个新数组...可以像这样一般地完成:
public <T> List<T[]> splitEachItemIntoOwnArray(T[] original) {
List<T[]> result = new ArrayList<T[]>();
if (original == null) return result;
for (T t : original) {
result.add((T[])new Object[] {t});
}
return result;
}
选项2,您还可以使用Arrays.copyOfRange()方法来实现此目的:
public <T> List<T[]> splitEachItemIntoOwnArray2(T[] original) {
List<T[]> result = new ArrayList<T[]>();
if (original == null) return result;
for (int i = 0; i < original.length; i++) {
result.add(Arrays.copyOfRange(original,i,i+1));
}
return result;
}
如果您始终希望将原始数组的每个项目拆分为自己的数组,则选项1和2起作用。 如果您可能希望将原始数组的每N个项目拆分为自己的项目,则应该可以这样做:
public <T> List<T[]> splitEachItemIntoOwnArray2(T[] original, int size) {
List<T[]> result = new ArrayList<T[]>();
if (original == null) return result;
int curPos = 0;
while (curPos < original.length) {
int remaining = original.length - curPos+1;
if (remaining <= size) {
result.add(Arrays.copyOfRange(original,curPos,original.length));
} else {
result.add(Arrays.copyOfRange(original,curPos,curPos+size));
}
curPos += size;
}
return result;
}
没有拆分afaik,但是您可以使用范围将其复制到新数组中
签出copyOfRange
static <T,U> T[] copyOfRange(U[] original, int from, int to, Class<? extends T[]> newType)
用法如下:
String [] array = {1,0,1,1};
// Copies from element 0 to 0
String[] array1 = Arrays.copyOfRange(array, 0, 0);
public static void main(String[] args) {
int[] array = {1,0,1,1};
int[] array1 = Arrays.copyOfRange(array, 0, 1);
int[] array2 = Arrays.copyOfRange(array, 1, 2);
int[] array3 = Arrays.copyOfRange(array, 2, 3);
int[] array4 = Arrays.copyOfRange(array, 3, 4);
System.out.println(array1[0]);
System.out.println(array2[0]);
System.out.println(array3[0]);
System.out.println(array4[0]);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.