Как проверить значение, равное любому из трех значений - PullRequest
1 голос
/ 19 октября 2019

Мне нужно проверить для каждого элемента данные метаданных книги (КНИГА или ЯЗЫК или ФОРМАТ). С кодом ниже, я получаю эту ошибку:

Cannot invoke equalsIgnoreCase(String) on the primitive type boolean
List<MetaDataTypeEntity> bookMdtTypeEntity=(List<MetaDataTypeEntity>)
CollectionUtils.emptyIfNull(getMetaDataTypes()).stream()
    .filter(data-> data.getMetaDataTypeName().equalsIgnoreCase("BOOK").equalsIgnoreCase("LANGUAGE").equalsIgnoreCase("FORMAT"))
    .findAny().orElse(null);

Мне нужно пройти внутрь каждого объекта в списке и проверить условия иерархии КНИГА И ФОРМАТ. ЯЗЫКА. Пожалуйста, дайте мне предложение кода.

Ответы [ 2 ]

1 голос
/ 19 октября 2019

Вы можете сохранить три значения в Set

Set<String> values = Set.of("BOOK","LANGUAGE","FORMAT");   //from java 9

, а затем использовать contains

MetaDataTypeEntity bookMdtTypeEntity= CollectionUtils.emptyIfNull(getMetaDataTypes()).stream()
.filter(data-> values.contains(data.getMetaDataTypeName().toUpperCase()))
.findAny().orElse(null);

. Как предложил @Holger, вы также можете использовать TreeSet для игнорирования регистрапоиск, а также самая важная вещь findAny возвращает Optional<MetaDataTypeEntity>, поэтому приведение не будет выполнено, так как вы возвращаете MetaDataTypeEntity и преобразуете его в List<MetaDataTypeEntity>

Set<String> set = new TreeSet<>(String.CASE_INSENSITIVE_ORDER);
            set.add("BOOK");
            set.add("LANGUAGE");
            set.add("FORMAT");

MetaDataTypeEntity bookMdtTypeEntity= CollectionUtils.emptyIfNull(getMetaDataTypes()).stream()
.filter(data-> values.contains(data.getMetaDataTypeName()))
.findAny().orElse(null);
0 голосов
/ 19 октября 2019

Вам нужно изменить свое состояние, .equalsIgnoreCase("BOOK") возвращает boolean, поэтому вы не можете использовать .equalsIgnoreCase("LANGUAGE") для boolean.

Попробуйте следующий код:

List<MetaDataTypeEntity> bookMdtTypeEntity=(List<MetaDataTypeEntity>)
        CollectionUtils.emptyIfNull(getMetaDataTypes()).stream()
                .filter(data-> data.getMetaDataTypeName().equalsIgnoreCase("BOOK")
                        || data.getMetaDataTypeName().equalsIgnoreCase("LANGUAGE")
                        || data.getMetaDataTypeName().equalsIgnoreCase("FORMAT"))
                .findAny().orElse(null);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...