通过在Java中并行地合并不等大小的列表来创建列表

时间:2014-03-03 07:50:12

标签: java

我有n个整数列表。我需要并行合并每个列表的项目,即每个列表的第0个位置的索引上的元素应该创建一个新的列表。

如果所有List的大小相等,我都能得到它。但是如果列表不一致,则抛出异常/现在正在工作。

请就此提出建议。

// here in lst we addedd all list.
    // size of lst = 30
        //sizeListForx= added index position of all list in lst 
    int total = 5;

    for (int k = 0; k < lst.size()/total; k++) {
        currentRecList = new ArrayList<String>();
        for(int n = 0; n < sizeListForx.size(); n++) {
            currentRecList.add(lst.get(k+n));
        }
        listForAll.add(currentRecList);
    }

这里我在添加所有列表并保持索引位置

由于

1 个答案:

答案 0 :(得分:1)

将所有列表添加到数组中,并通过该过程获取最大列表大小。然后你必须做两个嵌套的fors。看看这个:

package tests;

import java.util.ArrayList;
import java.util.List;

public class Main {

    public static void main(String[] args) {
        List<Integer> list0 = new ArrayList<Integer>();
        list0.add(1);
        List<Integer> list1 = new ArrayList<Integer>();
        list1.add(1);
        list1.add(2);
        List<Integer>[] listArray = new ArrayList[2];
        listArray[0] = list0;
        listArray[1] = list1;
        int maxListSize = 2;

        List newList = new ArrayList();
        for (int i = 0; i < maxListSize; i++) {
            List innerList = new ArrayList<Integer>();
            for (int j = 0; j < listArray.length; j++) {
                if (listArray[j].size() > i) {
                    innerList.add(listArray[j].get(i));
                } else {
                    innerList.add(null);
                }
            }
            newList.add(innerList);
        }
        System.out.println(newList);

    }
}