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