0

我正在使用一个包含 arlist=[1,2,3,1,4,7,1,5,9] 的数组列表

现在我正在寻找这种输出 winsChance=[[1,2,3],[1,4,7],[1,5,9]] 这意味着我必须分成 3 组元素并存储在另一个数组列表中。为此,我编写了以下代码。

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

4 回答 4

1

使用subList方法:

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

于 2013-06-18T07:39:36.480 回答
0

改变你的逻辑并使用subList()方法

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

前任:list.subList(from, to).clear();

于 2013-06-18T07:39:56.030 回答
0

您可能必须使用模运算符 ( %),例如:

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]]

于 2013-06-18T07:46:55.917 回答
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;
}
于 2014-02-20T10:18:18.323 回答