java - 如何从包含键 String 和 list<Object> 的 hashmap 中仅获取一个值

标签 java arraylist hashmap

如何从包含键字符串和列表的 hashmap 中仅获取一个值

HashMap :

HashMap<String, ArrayList<Person>> person = new HashMap<String, ArrayList<Person>>();

构造函数人:

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

获取对象的方法:

protected void findObject(String lname){
    if (person.containsKey(lname)) {
            System.out.println(lname + " phone: " + person.get(lname));
    }
}

但我需要两种方法:

protected void findPhone(String lname){
//should get only phone from Person;
}

protected void findMail(String mail){
//should get only mail from Person;
}

像这样工作:

protected List<Integer> findPhone(String lname) {
    List<Integer> listPhone = null;
    if (person.containsKey(lname)) {
        listPhone = person.get(lname).stream()
        .map(Person::getPhone)
        .collect(Collectors.toList());

    }
    return listPhone;
}

protected List<String> findMail(String lname) {
    List<String> listMail = null;
    if (person.containsKey(lname)) {
        listMail = person.get(lname).stream()
        .map(Person::getPhone)
        .collect(Collectors.toList());

    }
    return listmail;
}

最佳答案

如果您使用的是 Java 8,您可以使用:

protected void findPhone(String lname) {
    if (person.containsKey(lname)) {
        List<Integer> listPhone = person.get(lname).stream()
                .map(Person::getPhone)
                .collect(toList());
    }
}

protected void findMail(String lname) {
    if (person.containsKey(lname)) {
        List<String> listMails = person.get(lname).stream()
                .map(Person::getMail)
                .collect(toList());
    }
}

关于java - 如何从包含键 String 和 list<Object> 的 hashmap 中仅获取一个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49798171/

相关文章:

java - LWJGL - 隐藏时隐藏立方体面

java - java中对象的单纯名称意味着什么(Array,ArrayList)

java - Java 在 String 上的工作速度比 ArrayList 慢多少?

java - 为什么 Java ArrayList 删除功能似乎花费这么少?

r - 如何在R环境中将变量的值用作键?

java - 如何从 JobScheduler 的 onStartJob 打开带有 ACTION_VIEW Intent 的 url

Java n 节点树

java - 在Java中使用for循环创建映射时,Kep的值始终保持为0

java - 将字符串插入字节缓冲区

c++ - C++中python dict和tr1::unordered_map的区别