2012-03-12 69 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; 
} 
相關問題