我正在尝试读取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)));
}}}
答案 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);
和第二个元素相同。如果两者的规则相同,那么您也可以遍历数组的元素。希望你能为自己解决这个问题。