Фильтр списка по коллекции строк

117
20 августа 2019, 02:30

Необходимо отфильтровать список пользователей по списку параметров, пример

 List<String> regions = Arrays.asList("r02", "r05", "r09"); // список параметров
    //добавляем тестовых юзеров
    List<UserDto> userDtos = new ArrayList<>();
    for (int i = 0; i < 6; i++) {
        UserDto userDto = new UserDto();
        userDto.setRegion("r0" + i);
        userDtos.add(userDto);
    }
    userDtos.stream().filter(r->r.getRegion().equals(regions)).collect(Collectors.toList())

По идее мы должны найти двух юзеров с r02 и r05. Результат - пустой массив.

Подскажите как правильно отфильтровать, что бы получить коллекцию юзеров из списка параметров фильтра?

Answer 1

Вы сравниваете в quals два разных типа объектов - String и ArrayList. А вам нужно проверять, входит ли String в ваш List:

userDtos.stream().filter(r->regions.contains(r.getRegion())).collect(Collectors.toList());
READ ALSO
Парсинг объектов с ключами, с помощь JsonReader

Парсинг объектов с ключами, с помощь JsonReader

Возникла проблема с парсером JSON с помощью класса JsonReader (JSON приложен ниже, а так-же код парсера)Получается что первый элемент он читает хорошо,...

120