这是有详细信息的类,
public class TestMap {
public static void main(String[] args) {
// TODO Auto-generated method stub
List<PersonData> personDataLst = new ArrayList<PersonData>();
Person person = new Person();
Person person00 = new Person();
person.setFirstName("AASH");
person.setLastName("17072017");
person00.setFirstName("LAKSH");
person00.setLastName("11222020");
PersonData personData = new PersonData();
PersonData personData01 = new PersonData();
personData01.setPerson(person00);
personData.setPerson(person);
personDataLst.add(personData01);
personDataLst.add(personData);
PersonResponse response = new PersonResponse();
response.setPersonDatas(personDataLst);
System.out.println(response.getPersonDatas().size());
List<PersonData> list = response.getPersonDatas();
Map<String , String> someHashMap = new HashMap<String , String>();
someHashMap.put("17072017", "DateOfBirth");
List<String> filteredLst = someHashMap.entrySet().stream()
.filter(e -> list.contains(e.getKey()))
.map(Map.Entry::getValue)
.collect(Collectors.toList());
System.out.println("******"+filteredLst);
}
}
我正在尝试检查列表是否包含地图键,如果匹配则替换为地图值。 我编写的代码确实返回了一个空列表。
答案 0 :(得分:0)
如果出生日期存储在姓氏属性中(这是一个奇怪的选择),过滤应该如下:
List<String> filteredLst = someHashMap.entrySet().stream()
.filter(e -> list.stream()
.map(p->p.getPerson().getLastName())
.anyMatch(lastname -> lastname.equals(e.getKey())))
.map(Map.Entry::getValue)
.collect(Collectors.toList());