gpt4 book ai didi

java - 如何从包含键 String 和 list 的 hashmap 中仅获取一个值
转载 作者:行者123 更新时间:2023-11-30 06:13:20 25 4
gpt4 key购买 nike

如何从包含键字符串和列表的 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/

25 4 0