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
相关产品推荐
相关产品推荐

