简体   繁体   English

将地图的值放在列表中

[英]Put map's value in a list

I have a hashmap that contains, person Id as key, and person object as value. 我有一个哈希图,其中包含人员ID作为键,人员对象作为值。

Map<String, Person> personMap = new HashMap<String,Person>();

The person object (map's value) contains a person Id instance variable that I'd like to compare with user input. 人员对象(地图的值)包含一个人员ID实例变量,我想与用户输入进行比较。 My idea is to create an arraylist from the map's values as mentioned here - How to convert a Map to List in Java? 我的想法是从地图的值创建一个arraylist,如此处所述- 如何在Java中将地图转换为List? , so I can check if the arraylist.contains(userInput). ,因此我可以检查是否arraylist.contains(userInput)。

However, I need a arraylist of strings that contains Person.getPersonId(),please help me here. 但是,我需要一个包含Person.getPersonId()的字符串数组列表,请在这里帮助我。 Can I do it in one step? 我可以一步一步完成吗? If there is a better alternative then, please suggest. 如果有更好的选择,请提出建议。

At first, you need to get Person values from personMap . 首先,您需要从personMap获取Person值。

List<Person> persons =personMap.values();

To get arraylist of strings that contains Person.getPersonId(), you need to do following steps. 要获取包含Person.getPersonId()的字符串的数组列表,您需要执行以下步骤。

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());
  }
}

Try this: 尝试这个:

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM