关于java:将map的值放在列表中

Put map's value in a list

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

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

person对象(map的值)包含我想与用户输入进行比较的人物Id实例变量。 我的想法是从这里提到的地图值创建一个arraylist - 如何将Map转换为Java中的List?所以我可以检查arraylist.contains(userInput)。

但是,我需要一个包含Person.getPersonId()的字符串的arraylist,请在这里帮助我。 我可以一步到位吗? 如果有更好的替代方案,请建议。


首先,您需要从personMap获取Person值。

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

要获取包含Person.getPersonId()的字符串的arraylist,您需要执行以下步骤。

1
2
3
4
5
6
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());
  }
}

试试这个:

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