java - 检查一个数组列表是否包含两个字符串

标签 java for-loop java-stream

我有一个类似下面的 pojo 类

public CategoryModel {

public String getName() {
        return Name;
    }

    public void setName(String name) {
        Name = name;
    }

}

我创建了一个如下所示的数组列表。

List<CategoryModel> variantCategoryModelList = new ArrayList<>();
CategoryModel cat1= new CategoryModel();
cat1.setName(TEST1);
CategoryModel cat2= new CategoryModel();
cat2.setName(TEST1);
list.add(cat1);
list.add(cat2);

我必须检查值“TEST1”和“TEST2”是否存在于列表中,如果两个值都存在于“列表”中则返回“true”,我尝试了类似下面的方法,尽管我的“列表”有两个值,它返回 false。请你帮我检查我做错了什么,顺便说一句,我正在使用 JDK 11。

final Optional<CategoryModel> optionalData = variantCategoryModelList.stream().
                filter(valueData -> TEST1.equalsIgnoreCase(valueData.getName())
                        && TEST2.equalsIgnoreCase(valueData.getName())).findFirst();

        if(optionalData.isPresent()){
            return true;
        }

最佳答案

您可以将您的 CategoryModel 映射到名称并收集到字符串列表并调用 List.containsAll :

return variantCategoryModelList.stream()
                               .map(CategoryModel::getName)
                               .collect(Collectors.toList())
                               .containsAll(Arrays.asList("TEST1","TEST2"));

关于java - 检查一个数组列表是否包含两个字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64225042/

相关文章:

java - 如何在 Angular 前端中从 REST-Backend 接收一个字符串

python - 使用 for 循环在 pandas 中附加多个数据帧

javascript - 使用reduce 对一系列数字求和

Java Spliterator 不断拆分并行流

java - java中根据条件使用流操作将List转换为Map

java - 自定义形状旋转问题

java - RLE 风格压缩的数据结构

java - 使用 Stream 时返回 Collection 中的数组索引

java - 尝试将 JLabels 包装到 JScrollPane 内的 JPanel

c++ - 使用 std::tie 作为循环目标的范围