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

如何使用for-each循环打印存储不同类对象的ArrayList

如何使用for-each循环打印存储不同类对象的ArrayList?

嗨,我一眼就看出问题出在哪啦!你在for-each循环里的用法搞错了——咱们先看你出错的代码片段:

for (Object i : mylist) {
    System.out.println(mylist.get(i));
}

这里的循环变量i不是索引值,它是直接从mylist里取出的每一个对象本身!而ArrayList.get()方法需要传入的是int类型的索引,你传一个Object对象进去,编译器肯定会报错,类型不匹配嘛。

正确的写法超简单:

直接打印循环变量就行,因为它已经是你要的对象了:

// 建议把变量名改成obj,更直观,避免和索引混淆
for (Object obj : mylist) {
    System.out.println(obj);
}

因为你提到每个类都重写了toString()方法,所以直接打印对象就会输出你自定义的字符串内容,和你用mylist.get(0)、mylist.get(1)这种方式打印的效果完全一致。

额外小技巧(如果需要区分对象类型):

要是你想在打印的时候区分不同类型的对象,也可以结合instanceof做判断:

for (Object obj : mylist) {
    if (obj instanceof Loan) {
        System.out.println("这是一个Loan对象:" + obj);
    } else if (obj instanceof Date) {
        System.out.println("这是一个Date对象:" + obj);
    } else if (obj instanceof Strings) {
        System.out.println("这是一个Strings对象:" + obj);
    }
    // 其他类型依次类推
}

再啰嗦两句核心区别:

  • 普通for循环(for(int i=0; i<mylist.size(); i++))是通过索引去集合里拿元素;
  • for-each循环是直接遍历集合里的每一个元素,把元素赋值给循环变量,不需要再通过索引获取。

搞清楚这一点,以后就不会再犯类似的错误啦~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 07:20:12