You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java中ArrayList.get()打印内存地址而非值,二维ArrayList无法输出格式化数字网格

解决二维ArrayList打印内存地址&批量添加元素的问题

嘿,我刚看完你的问题,这确实是新手用二维ArrayList常踩的坑,我来一步步帮你捋清楚!

为什么会打印内存地址?

当你直接调用System.out.println(arrayList.get(i))时,其实你打印的是整个内层ArrayList对象,Java默认会输出它的toString()结果,也就是类似java.util.ArrayList@xxxxxx的内存地址标识,而不是里面的具体元素。

批量添加元素的正确姿势

你完全不用逐个调用.add(),ArrayList有addAll()方法可以批量添加元素,但要注意把数组转成Collection类型(比如用Arrays.asList()),举个实用的例子:

// 初始化二维ArrayList
ArrayList<ArrayList<Integer>> grid = new ArrayList<>();

// 处理基本类型int数组的情况
int[] rowArray = {1, 2, 3, 4};
// 先把int[]转成Integer[],再包装成ArrayList
ArrayList<Integer> rowList = new ArrayList<>(Arrays.asList(Arrays.stream(rowArray).boxed().toArray(Integer[]::new)));
grid.add(rowList);

// 如果是包装类型Integer[],会更简单
Integer[] rowIntegerArray = {5, 6, 7, 8};
grid.add(new ArrayList<>(Arrays.asList(rowIntegerArray)));

这里要注意:Arrays.asList()返回的是固定大小的List,没法直接修改,所以最好把它包装成新的ArrayList。如果是基本类型数组(比如int[]),必须先转成包装类型数组(Integer[])才能用Arrays.asList(),上面用Stream做转换是比较简洁的方式。

正确打印数字网格的方法

你需要嵌套遍历二维ArrayList:先遍历外层的每一行(每个内层ArrayList),再遍历该行的每个元素:

// 遍历打印二维ArrayList
for (ArrayList<Integer> row : grid) {
    for (Integer num : row) {
        System.out.print(num + "\t"); // 用制表符对齐更美观
    }
    System.out.println(); // 每行结束换行
}

这样就能像二维数组一样打印出格式化的数字网格,而不是内存地址了。

完整可运行示例

给你一个完整的代码示例,方便你直接参考:

import java.util.ArrayList;
import java.util.Arrays;
import java.util.stream.Stream;

public class GridDemo {
    public static void main(String[] args) {
        // 初始化二维ArrayList
        ArrayList<ArrayList<Integer>> grid = new ArrayList<>();

        // 批量添加第一行
        int[] row1 = {1, 2, 3};
        ArrayList<Integer> rowList1 = new ArrayList<>(Arrays.asList(Stream.of(row1).boxed().toArray(Integer[]::new)));
        grid.add(rowList1);

        // 批量添加第二行
        Integer[] row2 = {4, 5, 6};
        grid.add(new ArrayList<>(Arrays.asList(row2)));

        // 打印格式化网格
        System.out.println("格式化的数字网格:");
        for (ArrayList<Integer> row : grid) {
            for (Integer num : row) {
                System.out.print(num + "\t");
            }
            System.out.println();
        }
    }
}

内容的提问来源于stack exchange,提问作者Haytham

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 04:18:17