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);
添加回答
舉報