Java一维集合重组成二维

正确写法:

ArrayList<ArrayList<Integer>> numbers = new ArrayList<>();
        ArrayList<Integer> number = new ArrayList<>();
        // 初始化数据
        int index = 0;
        for (int i = 0; i < 9; i ++) {
            if (i % 3 != 0) {
                index ++;
                number.add(i);
                if (index == 2) {
                    System.out.println("原数据 " + numbers.toString());
                    numbers.add(number);
                    System.out.println("加数据 " + numbers.toString());
                    index = 0;
//注意这里
                    number = new ArrayList<>();
                }
                System.out.println("----------------------------------------");
            }
        }
    }

打印结果:

----------------------------------------
原数据 []
加数据 [[1, 2]]
----------------------------------------
----------------------------------------
原数据 [[1, 2]]
加数据 [[1, 2], [4, 5]]
----------------------------------------
----------------------------------------
原数据 [[1, 2], [4, 5]]
加数据 [[1, 2], [4, 5], [7, 8]]
----------------------------------------

如果

number = new ArrayList<>();

改成

number.clear();

打印结果就会不一样

原数据 []
加数据 [[1, 2]]
----------------------------------------
----------------------------------------
原数据 [[4, 5]]
加数据 [[4, 5], [4, 5]]
----------------------------------------
----------------------------------------
原数据 [[7, 8], [7, 8]]
加数据 [[7, 8], [7, 8], [7, 8]]

结果被最后加入的占据了

我开始一度怀疑是编译器出问题了

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 32,163评论 18 399
  • 一、 1、请用Java写一个冒泡排序方法 【参考答案】 public static void Bubble(int...
    独云阅读 5,252评论 0 6
  • 什么是设计模式 设计模式(Design pattern)是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经...
    辽A丶孙悟空阅读 4,003评论 1 15
  • 一、Collection集合 1.1集合体系结构【记忆】 集合类的特点​ 提供一种存储空间可变的存储模型,存储的数...
    super_hongtao阅读 2,256评论 0 0
  • 夜莺2517阅读 127,810评论 1 9