我正在使用包含的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]]。任何人都可以建议我获得所需的输出。
答案 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;
}