如何在arraylist中获取数据组

时间:2013-06-18 07:36:54

标签: java arraylist

我正在使用包含的arraylist     arlist = [1,2,3,1,4,7,1,5,9]

现在我正在寻找这种输出     winningChance = [[1,2,3],[1,4,7],[1,5,9] 这意味着我必须分成3组元素并将其存储在另一个arraylist中。 为此,我编写了以下内容。

int size=arlist.size();
for(int i=size-1;i>=0;i--){
winningChance.add(arlist.remove(i));
System.out.println(arlist);
System.out.println(winningChance);

对于这段代码,我得到的输出为[[1,2,3]]。任何人都可以建议我获得所需的输出。

4 个答案:

答案 0 :(得分:1)

使用subList方法:

List<E> subList(int fromIndex, int toIndex)

答案 1 :(得分:0)

更改逻辑并使用{​​{3}}方法

  

返回指定fromIndex(包含)和toIndex(独占)之间此列表部分的视图。 (如果fromIndex和toIndex相等,则返回的列表为空。)

ex:list.subList(from, to).clear();

答案 2 :(得分:0)

您可能必须使用modulo operator (%),例如:

final int elementsPerGroup = 3;

// your init list
List<Integer> list = Arrays.asList(1, 2, 3, 1, 4, 7, 1, 5, 9);

// the final list of lists
List<List<Integer>> listOfLists = new ArrayList<List<Integer>>();

// logic
for (int i = 0; i < list.size(); i++) {
    List<Integer> sublist;
    if (i % elementsPerGroup == 0) {
        sublist = new ArrayList<Integer>();
        listOfLists.add(sublist);
    } else {
        sublist = listOfLists.get(listOfLists.size() - 1);
    }
    sublist.add(list.get(i));
}

最终列表列表等于[[1, 2, 3], [1, 4, 7], [1, 5, 9]]

答案 3 :(得分:0)

<T> T List<List<T>> group(final List<T> list, final int batchSize) {
    List<List<T>> groups = new ArrayList<>();
    for(int start = 0; start < list.size(); start += batchSize) {
        groups.add(list.subList(start, Math.min(start + batchSize, list.size()));
    }
    return groups;
}