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

Android中如何打印ArrayList<Movie>的具体内容?

解决List打印显示对象地址的问题

你看到的com.myapp.Movie@709779f是Object类默认toString()方法的输出,格式为类名@十六进制哈希码。要打印列表里的具体内容,核心是让Movie类返回包含字段信息的字符串,有以下几种方案:


1. 重写Movie类的toString()方法

这是最通用的方案,修改Movie类,添加自定义的toString()实现,把你需要展示的字段都包含进去:

public class Movie {
    // 假设你的Movie类有这些字段
    private int id;
    private String title;
    private int releaseYear;

    // 构造方法、getter/setter省略

    @Override
    public String toString() {
        return "Movie{" +
                "id=" + id +
                ", title='" + title + '\'' +
                ", releaseYear=" + releaseYear +
                '}';
    }
}

修改后,你原来的两种打印方式都会输出具体内容:

  • 循环打印时,result.toString()会返回你定义的字段拼接字符串
  • Arrays.toString(filteredList.toArray())会遍历每个Movie对象,调用其toString()方法,最终输出类似[Movie{id=1, title='Test Movie', releaseYear=2024}, ...]的结果

2. 使用Java 16+的Record类(适合不可变数据类)

如果你的Movie类只是用来存储数据,没有复杂的业务逻辑,可以用Record类替代普通类,它会自动生成包含所有字段的toString()、equals()和hashCode()方法:

public record Movie(int id, String title, int releaseYear) {}

这样无需手动重写toString(),直接打印列表就能看到所有字段内容。


3. 临时手动拼接字段(无需修改Movie类)

如果不想修改Movie类,只是临时打印调试,可以在循环里直接拼接字段值:

for (Movie result : filteredList) {
    Log.e("Agil_Limits - ", "Movie: id=" + result.getId() + ", title=" + result.getTitle() + ", releaseYear=" + result.getReleaseYear());
}

这种方式适合快速调试,但复用性差,每次打印都要手动写字段拼接逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 04:05:05