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

Java LinkedList存储Person对象异常及遍历查询指定年份人员咨询

问题解答

一、解决LinkedList输出Person对象哈希值的问题

你看到的Person@xxxxxx这类输出,是因为Person类默认继承了Object类的toString()方法——这个方法默认返回「类名@对象哈希码」的格式。要让LinkedList输出人员的实际信息,只需要在Person类里重写toString()方法,把姓名和年份拼接成你想要的格式就行。

修改后的Person类代码如下:

class Person {
    String name;
    int year;

    public Person(String name, int year) {
        this.name = name;
        this.year = year;
    }

    // 重写toString()方法,自定义输出格式
    @Override
    public String toString() {
        return "Person{name='" + name + "', year=" + year + "}";
    }
}

这样当你打印LinkedList时,就会输出每个Person的具体信息,而非哈希值了。

二、用for-each循环筛选年份早于1950年的人员

实现这个需求很简单:直接用for-each遍历LinkedList中的每个Person对象,判断其year属性是否小于1950,符合条件的就输出或做其他处理。

修改后的LinkedListStart类代码如下:

import java.util.LinkedList;

class LinkedListStart {
    public static void main(String[] args) throws java.lang.Exception {
        LinkedList<Person> persons = new LinkedList<>();
        persons.add(new Person("Joe", 2010));
        persons.add(new Person("Jane", 2012));
        persons.add(new Person("Charly", 1910));
        persons.add(new Person("Daisy", 1908));

        // 打印完整的LinkedList(现在会显示具体信息)
        System.out.println("LinkedList : " + persons);

        // 用for-each筛选年份早于1950的人员
        System.out.println("\n年份早于1950年的人员:");
        for (Person person : persons) {
            if (person.year < 1950) {
                System.out.println(person);
            }
        }
    }
}

运行效果

修改后的代码运行后,输出会变成这样:

LinkedList : [Person{name='Joe', year=2010}, Person{name='Jane', year=2012}, Person{name='Charly', year=1910}, Person{name='Daisy', year=1908}]

年份早于1950年的人员:
Person{name='Charly', year=1910}
Person{name='Daisy', year=1908}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.07 09:48:12