将数组分成3块并将它们放入数组数组中?

我一直在尝试找到解决问题的方法,我有一个Foods调用数组foods,我想将其划分为数组数组 (foodsArray),因此每个数组包含 3 个Food对象。例如:[[Food1, Food2, Food3], [Food4, Food5, Food6]]


我目前已经像这样实现了我的问题:


Food[] foods = new Food[foodData.length]; //loaded in from a file

List<Food> foodsArray = new ArrayList<Food>();


for(int i=0;i<foods.length;i+=5){

   foodsArray.add(Arrays.copyOfRange(foods, i, Math.min(foods,i+5))); //error is here

   //Output

   System.out.println(Arrays.toString(Arrays.copyOfRange(foods, i, Math.min(foods,i+5))));

}

当前结果(foodsArray):[[Lcom.company.Food;@3c756e4d, [Lcom.company.Food;@7c0e2abd, [Lcom.company.Food;@48eff760, [Lcom.company.Food;@402f32ff]


预期结果(foodsArray):


[[com.company.Food@458ad742, com.company.Food@48eff760, com.company.Food@402f32ff],

 [com.company.Food@6d8a00e3, com.company.Food@548b7f67, com.company.Food@7ac7a4e4],

 [com.company.Food@5dfcfece]]


慕田峪7331174
浏览 139回答 2
2回答

九州编程

那这个呢!您只需遍历数组并将其中三个添加到列表中,然后在每三个之后,将列表添加到另一个列表,重置初始列表。ArrayList<ArrayList<Food>> result = new ArrayList<>();ArrayList<Food> subArray = new ArrayList<>();for (int i = 0; i < foods.length; i++) {&nbsp; &nbsp; subArray.add(foods[i]);&nbsp; &nbsp; if (i % 3 == 2) {&nbsp; &nbsp; &nbsp; &nbsp; result.add(subArray);&nbsp; &nbsp; &nbsp; &nbsp; subArray = new ArrayList<>();&nbsp; &nbsp; }}很好很简单。正如 Nicholas K 建议的那样,我正在使用List<List<Food>>

慕神8447489

迟到了,但这里是 Java 8 解决方案:Food[][]&nbsp;partition(Food[]&nbsp;foods,&nbsp;int&nbsp;groupSize)&nbsp;{&nbsp;&nbsp;return&nbsp;IntStream.range(0,&nbsp;foods.length) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.boxed() &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.collect(Collectors.groupingBy(index&nbsp;->&nbsp;index&nbsp;/&nbsp;groupSize)) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.values() &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.stream() &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.map(indices&nbsp;->&nbsp;indices &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.stream() &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.map(index&nbsp;->&nbsp;foods[index]) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.toArray(Food[]::new)) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.toArray(Food[][]::new);}实际上,partition该方法允许将数组划分为任意大小的组groupSize。如果出现问题,将通过调用获得所需的结果:Food[][]&nbsp;result&nbsp;=&nbsp;partition(foods,&nbsp;3);
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java