我有两个ArrayLists。第一个列表包含一些x
个元素,这些元素又是ArrayLists。第二个列表仅包含整数值。
第二个列表大小始终小于第一个列表大小第一个列表的示例是:[[TC1,TC1_1],[,TC1_2],[TC2,TC2_1],[TC3,TC3_1] [,TC3_2],[TC4, TC4_1] [,TC4_2] [,TC4_3],[TC5,TC5_1],[TC6,TC6_1]]
第二个列表的示例是[0,2,3,5,8,9]
。第二个Araylist元素指向第一个arraylist,其中第一个arraylist的各个ArrayList元素的第一个元素不为空
现在要求是第一个列表应该分成6个列表,其中6个是第二个列表大小。输出应如下所示。
在6个新列表中,第1个列表将包含从0到第1个索引的主列表元素。第二个列表将包含来自第三个索引的主列表元素。第3个列表将包含从第4个到第5个索引的主列表元素,依此类推。最终输出将如下所示
`[[[TC1,TC1_1],[,TC1_2]]
[[TC2,TC2_1]]
[[TC3,TC3_1][,TC3_2]]
[[TC4,TC4_1][,TC4_2][,TC4_3]]
[[TC5,TC5_1]]
[[TC6,TC6_1]]]
private ArrayList getTCsIncludingSubTcs(ArrayList TCIndexes,ArrayList alTCs) {
//List tempSubList=new ArrayList();
ArrayList finalTCS=new ArrayList();
for(int j=0;j<TCIndexes.size();j++){
int TCIndex=(int)TCIndexes.get(j);
if(j==0 && TCIndexes.size()==1){
//List tempSubList=new ArrayList(alTCs.subList(TCIndex,(int)alTCs.size()));
List tempSubList=getSubArrayList(TCIndex,(int)alTCs.size(),alTCs);
finalTCS.add(tempSubList);
break;
}
int nextTCIndex=j+1;
System.out.println(nextTCIndex);
if(j==TCIndexes.size()-1){
List tempSubList=getSubArrayList(TCIndex,(int)alTCs.size(),alTCs);
finalTCS.add(tempSubList);
break;
}
List tempSubList=getSubArrayList(TCIndex,(int)alTCs.size(),alTCs);
finalTCS.add(tempSubList);
System.out.println("finalTCS :"+finalTCS);
}
System.out.println("fc size"+finalTCS.size());
return finalTCS;
}
答案 0 :(得分:0)
试试这段代码。
公共课测试{
private List<List<String>> getTcsIncludingSubTcs(ArrayList<Integer> tcIndexes,ArrayList<String> alTcs) {
List<List<String>> finalTcs=new ArrayList<>();
List<String> temp = new ArrayList<>();
int size = tcIndexes.size();
int i= alTcs.size();
int k = 0;
for(int j=0; j<alTcs.size(); j++){
if(( j != 0 && j % size == 0 && i >= size))
{
temp = new ArrayList<>();
k++;
}
i--;
temp.add(alTcs.get(j));
if(finalTcs.contains(temp))
finalTcs.remove(k);
finalTcs.add(k, temp);
}
return finalTcs;
}
public static void main (String arg[])
{
ArrayList<String> data1 = new ArrayList<>();
data1.add("TC1");
data1.add("TC2");
data1.add("TC3");
data1.add("TC4");
data1.add("TC5");
data1.add("TC6");
data1.add("TC7");
data1.add("TC8");
data1.add("TC9");
data1.add("TC10");
ArrayList<Integer> data2 = new ArrayList<>();
data2.add(0);
data2.add(3);
data2.add(6);
Test t = new Test();
List<List<String>> list = t.getTcsIncludingSubTcs(data2, data1);
for(List<String> l : list)
System.out.println(l);
}
}
输出:
[TC1, TC2, TC3]
[TC4, TC5, TC6]
[TC7, TC8, TC9, TC10]
答案 1 :(得分:0)
另一种解决方案是, 我们有源列表和起始索引列表。使用这两个列表生成结束索引列表。现在使用起始索引列表和结束索引列表来生成所需的最终输出