2012-03-12 115 views
0

我有一个数组,其中包含一串数字,如:1011Java - 如何将数组拆分为四个独立的数组?

我想将它分成四个单独的数组,其中包含每个这些值。我该怎么做呢?

String [] array = {1,0,1,1}; 

//would I do something like this: 

array.substring(0,4) 
+3

什么是与只使用'数组[0],数组[1],数组[2],数组[问题3]'? – 2012-03-12 17:23:36

+0

System.arrayCopy。 – 2012-03-12 17:23:49

+0

这是一个计算机体系结构项目,每个数组表示一个二进制数。最后,我需要能够对这些进行逻辑运算,我认为这样做的唯一方法就是像这样拆分数组。 – 2012-03-12 17:25:20

回答

0

有没有分裂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); 
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]); 
} 
1

选项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; 
} 
相关问题