我需要获取并检查每个元素的元数据类型(书籍,语言或格式)。使用下面的代码,我得到此错误:
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);
我需要进入每个JSON对象列表并检查条件BOOK和FORMAT LANGUAGE层次结构。请给我一个代码建议。
您需要更改条件,.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);
您可以在Set
中存储三个值
Set<String> values = Set.of("BOOK","LANGUAGE","FORMAT"); //from java 9
然后使用contains
List<MetaDataTypeEntity> bookMdtTypeEntity=(List<MetaDataTypeEntity>)
CollectionUtils.emptyIfNull(getMetaDataTypes()).stream()
.filter(data-> values.conatins(data.getMetaDataTypeName().toUpperCase()))
.findAny().orElse(null);