2 回答
TA贡献1995条经验 获得超2个赞
这又如何!您只需循环访问数组并将其中三个添加到列表中,然后在每个三个列表之后,将列表添加到另一个列表,然后重置初始列表。
ArrayList<ArrayList<Food>> result = new ArrayList<>();
ArrayList<Food> subArray = new ArrayList<>();
for (int i = 0; i < foods.length; i++) {
subArray.add(foods[i]);
if (i % 3 == 2) {
result.add(subArray);
subArray = new ArrayList<>();
}
}
很好,很简单。正如Nicholas K所建议的,我正在使用一个List<List<Food>>
TA贡献1827条经验 获得超9个赞
迟到的聚会,但这里是Java 8解决方案:
Food[][] partition(Food[] foods, int groupSize) {
return IntStream.range(0, foods.length)
.boxed()
.collect(Collectors.groupingBy(index -> index / groupSize))
.values()
.stream()
.map(indices -> indices
.stream()
.map(index -> foods[index])
.toArray(Food[]::new))
.toArray(Food[][]::new);
}
实际上,方法允许将数组划分为任意大小的组。partitiongroupSize
如果出现问题,将通过以下电话获得所需的结果:
Food[][] result = partition(foods, 3);
添加回答
举报