为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

慕田峪7331174 2022-07-27 20:31:37
我一直在尝试找到解决问题的方法,我有一个Foods调用数组foods,我想将其划分为数组数组 (foodsArray),因此每个数组包含 3 个Food对象。例如:[[Food1, Food2, Food3], [Food4, Food5, Food6]]我目前已经像这样实现了我的问题:Food[] foods = new Food[foodData.length]; //loaded in from a fileList<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]]
查看完整描述

2 回答

?
九州编程

TA贡献1785条经验 获得超4个赞

那这个呢!您只需遍历数组并将其中三个添加到列表中,然后在每三个之后,将列表添加到另一个列表,重置初始列表。


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


查看完整回答
反对 回复 2022-07-27
?
慕神8447489

TA贡献1780条经验 获得超1个赞

迟到了,但这里是 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);}

实际上,partition该方法允许将数组划分为任意大小的组groupSize

如果出现问题,将通过调用获得所需的结果:

Food[][] result = partition(foods, 3);


查看完整回答
反对 回复 2022-07-27
  • 2 回答
  • 0 关注
  • 137 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号