Java 放置地图';列表中的值

Java 放置地图';列表中的值,java,Java,我有一个hashmap,其中包含:person Id作为键,person对象作为值 Map<String, Person> personMap = new HashMap<String,Person>(); Map personMap=newhashmap(); person对象(映射的值)包含一个person Id实例变量,我想与用户输入进行比较。我的想法是根据这里提到的映射值创建一个arraylist-,这样我就可以检查arraylist.contains是否包含

我有一个hashmap,其中包含:person Id作为键,person对象作为值

Map<String, Person> personMap = new HashMap<String,Person>();
Map personMap=newhashmap();
person对象(映射的值)包含一个person Id实例变量,我想与用户输入进行比较。我的想法是根据这里提到的映射值创建一个arraylist-,这样我就可以检查arraylist.contains是否包含(userInput)


但是,我需要一个包含Person.getPersonId()的字符串数组列表,请在这里帮助我。我能一步完成吗?如果有更好的选择,请建议。

首先,您需要从
personMap
获取
Person

List<Person> persons =personMap.values();
List persons=personMap.values();
要获取包含Person.getPersonId()的字符串的arraylist,需要执行以下步骤

List<String> personIds=new ArrayList<>();
for(Person p: persons){ // Iterate over persons List
  if(p.getPersonId()!=null){ //Check the personId from Person
    personIds.add(p.getPersonId());
  }
}
List personIds=new ArrayList();
对于(personp:persons){//遍历persons列表
如果(p.getPersonId()!=null){//请从Person检查personId
add(p.getPersonId());
}
}
试试这个:

List<Person> personList = new ArrayList<>(personMap.values());
List<String> idList = personList.stream().map(Person::getPersonId).collect(Collectors.toList());
List personList=newarraylist(personMap.values());
List idList=personList.stream().map(Person::getPersonId.collect(Collectors.toList());

为什么要将值转换为
数组列表
?你只是想在地图上找到一把钥匙吗?您不能仅使用
get
来执行此操作吗?是的-您可以验证
Map
中的
String
键实际上是否与
person
对象上的
personId
字段相同吗?如果是这样的话,那么所有这些列表内容都是完全向后的,没有必要的-你完全忽略了
Map
Hi的预期功能,他想要的是IdHi Danh和Mani的
list
,答案被修改了。谢谢