2014-06-17 2 views
0

ArrayList의 행에서 특정 요소를 읽으려고합니다.ArrayList 내에서 특정 요소를 반복적으로 읽는 중

Combinations = 

[0, 1] 
[0, 2] 
[1, 2] 

내가 배열의 각 행을 읽어 루프를 만들고 싶습니다, 그 라인의 각 요소 예를 들어, 배열 목록 내 코드에 의해 생산되고 다음 라인 크기 3의 조합이라고 해당 배열 행의 값에 따라 문자열을 새 배열에 추가하십시오. Java에서 다음 의사 코드를 수행하려면 무엇을 사용해야합니까?

결과의 ArrayList는 것

For (int i = 0; i < Combinations.size(); i++) 
    If Combinations(Line i, First Element) = "0" 
    Then NewArray(i).add("Vial1,") 
    If Combinations(Line i, First Element) = "1" 
    Then NewArray(i).add("Vial2,") 
    If Combinations(Line i, First Element) = "2" 
    Then NewArray(i).add("Vial3,") 

    If Combinations(Line i, Second Element)= "0" 
    Then NewArray(i).add(+"Vial1") 
    If Combinations(Line i, Second Element)= "1" 
    Then NewArray(i).add(+"Vial2") 
    If Combinations(Line i, Second Element)= "2" 
    Then NewArray(i).add(+"Vial3") 

를 다음과 같이 의사 코드는 다음과 같습니다 아래

NewArray = 

[Vial1,Vial2] 
[Vial1,Vial3] 
[Vial2,Vial3] 

나는 내 ArrayList를

import java.util.*; 
import org.apache.commons.math3.util.CombinatoricsUtils; 

public class Combinations1 { 

public static void main (String[] args){ 
ArrayList<Integer[]> combinations = new ArrayList(); 
Iterator<int[]> iter = CombinatoricsUtils.combinationsIterator(3, 2); 
while (iter.hasNext()) { 
    int[] resultint = iter.next(); 
    Integer[] resultInteger = new Integer[2]; 
    for (int i = 0; i < 2; i++) { 
     resultInteger[i] = Integer.valueOf(resultint[i]); 
    } 
    combinations.add(resultInteger); 
} 
for (int i = 0; i < combinations.size(); i++) { 
    System.out.println(Arrays.deepToString(combinations.get(i))); 
}}} 
+0

당신은 질문이 정확히 무엇입니까? – redFIVE

+0

어쩌면 int 대신 enum을 사용할 수 있습니까? –

답변

0

귀하의 의사가 엉망의 비트입니다. 현재 Integer 배열을 String 배열로 바꾸고 싶습니다.

난 당신이 뭔가 싶은 생각 : -> Vial1, 1 - 규칙이 정확히 0이면 물론

ArrayList<String[]> NewArray = new ArrayList<String[]>(); 
for (Integer[] combination : combinations) { 
    String[] newCombination = new String[2]; 
    if (combination[0].intValue() == 0) { 
     newCombination[0] = "Vial1"; 
    } 
    ... etc for other possible values 
    if (combination[1].intValue() == 0) { 
     newCombination[1] = "Vial1"; 
    } 
    .. etc for other values 
    NewArray.add(newCombination); 
} 

>를 Vial2 등 별도로 각각의 경우를 처리해야하지만 대신하지 않습니다 :

newCombination[0] = "Vial" + (combination[0].intValue() + 1); 

및 두 번째 요소에 대해서도 동일합니다. 규칙이 둘 다 동일하면 배열 요소를 반복 할 수 있습니다. 잘하면 자신을 위해 그것을 알아낼 수 있기를 바랍니다.

+0

감사합니다. 그것은 위대한 작품. – user3633260

0

할 일을 생성하기 위해 사용하고있는 코드입니다 이런 뜻인가요?

String[][] newArray = new String[combinations.size()][2]; 
for (int i = 0; i < combinations.size(); i++) { 

Integer[] eachArray = combinations.get(i); 

    for (int j = 0; j < eachArray.length; j++){ 
     int elem = eachArray[j]; 
     if (elem==0 || elem==1 || elem==2){ 
      newArray[i][j]="Vial"+(elem+1); 
     } 
    } 

}

관련 문제