#java
#java
Вопрос:
Это класс, который имеет детали,
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);
}
}
Я пытаюсь проверить, содержит ли список ключ карты, если совпадение заменяется значением карты.
Код, который я написал, возвращает пустой список.
Комментарии:
1.
List
СодержитPersonData
s. Ключи карты являются строками. Поэтомуlist.contains(e.getKey())
всегда будет возвращать false.2. Как отфильтровать его и заменить этой строкой.
3. Это зависит от того
PersonData
, как выглядит класс.4. публичный класс PersonData { частное лицо person; публичное лицо getPerson() { возвращает person; } публичный void setPerson(Person person) { this.person = person; } } публичный класс Person { частная строка FirstName; частная строка LastName; публичная строка getFirstName() { возвращает FirstName; } публичный void setFirstName(Строка FirstName) { this.FirstName = FirstName; } общедоступная строка getLastName() { возвращает LastName; } public void setLastName(строка LastName) { LastName = LastName; } }
5. Если он не содержит свойство date of birth (тип которого — String), как вы ожидаете, что ключи на вашей карте будут иметь какое-либо отношение к элементам списка?
Ответ №1:
Если дата рождения хранится в свойстве last name (что является странным выбором), фильтрация должна быть следующей:
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());