迭代读取ArrayList中的特定元素

时间:2014-06-17 15:34:29

标签: java arrays arraylist

我正在尝试读取ArrayList行中的特定元素。例如,我的代码正在生成一个名为“大小为3的组合”的数组列表,其中包含以下行:

Combinations =

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

我想创建一个循环,它将读取数组的每一行,该行的每个元素,并根据该数组行的值将字符串添加到新数组。我应该使用什么来实现java中的以下伪代码?

伪代码如下

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")

结果ArrayList将是:

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)));
}}}

2 个答案:

答案 0 :(得分: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);
        }
    }

}

答案 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);
}

当然,如果你的规则正好是0 - > Vial1,1-&gt; Vial2等,您不需要单独处理每个案例,而是:

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

和第二个元素相同。如果两者的规则相同,那么您也可以遍历数组的元素。希望你能为自己解决这个问题。