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

如何从键为String、值为ArrayList<Person>的HashMap中获取单个属性值

解决方案:拆分findPhone和findMail方法

首先得明确你的场景:这个HashMap是用姓氏(lname)作为键,对应一组同姓氏的Person对象(因为值是ArrayList<Person>),所以我们的方法需要考虑一个姓氏对应多个人的情况,下面是具体实现:

1. 先给Person类补充必要的getter方法

因为要获取phone和mail属性,你的Person类得有对应的getter(不然没法访问私有属性):

public class Person {
    private int phone;
    private String mail;

    public Person(int phone, String mail) {
        this.phone = phone;
        this.mail = mail;
    }

    // 新增getter方法
    public int getPhone() {
        return phone;
    }

    public String getMail() {
        return mail;
    }
}

2. 实现findPhone方法

这个方法会根据传入的lname,遍历对应列表里的所有Person,输出每个人的手机号:

protected void findPhone(String lname) {
    if (person.containsKey(lname)) {
        ArrayList<Person> personList = person.get(lname);
        System.out.println(lname + " 的所有手机号:");
        for (Person p : personList) {
            System.out.println("- " + p.getPhone());
        }
    } else {
        System.out.println("未找到姓氏为 " + lname + " 的记录");
    }
}

3. 实现findMail方法

逻辑和findPhone完全一致,只是获取的是邮箱属性:

protected void findMail(String lname) {
    if (person.containsKey(lname)) {
        ArrayList<Person> personList = person.get(lname);
        System.out.println(lname + " 的所有邮箱:");
        for (Person p : personList) {
            System.out.println("- " + p.getMail());
        }
    } else {
        System.out.println("未找到姓氏为 " + lname + " 的记录");
    }
}

额外说明:如果每个lname只对应一个Person

如果你的业务场景里,一个姓氏只会对应一个Person对象,那可以简化代码,直接取列表的第一个元素:

// 简化版findPhone(单个Person场景)
protected void findPhone(String lname) {
    if (person.containsKey(lname) && !person.get(lname).isEmpty()) {
        Person p = person.get(lname).get(0);
        System.out.println(lname + " 的手机号:" + p.getPhone());
    } else {
        System.out.println("未找到姓氏为 " + lname + " 的记录");
    }
}

这样就可以精准输出你需要的单个属性值啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 10:06:17