将地图的值放在列表中

时间:2013-11-03 06:19:50

标签: java

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

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

person对象(map的值)包含我想与用户输入进行比较的人物Id实例变量。我的想法是根据这里提到的地图值创建一个arraylist - How to convert a Map to List in Java?,这样我就可以检查是否有arraylist.contains(userInput)。

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

2 个答案:

答案 0 :(得分:5)

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

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

答案 1 :(得分:0)

试试这个:

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