我有一个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,请在这里帮助我。我可以一步到位吗?如果有更好的选择,请建议。
答案 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());