【发布时间】:2025-11-26 18:20:09
【问题描述】:
我有一个像下面这样的 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;
}
【问题讨论】:
-
您的第一段代码没有意义。第二段代码中的 TEST1 和 TEST2 是什么?
-
如果
list.get(0).getName是你需要()的方法,如果它是一个变量,恕我直言,它的名字很糟糕,因为它把我们与getter 和setter 混淆了。 -
我不熟悉过滤器,但我很确定在这里,您检查
valueData.getName()是否同时等于TEST1和TEST2,这似乎并不你想要的都不可能。 -
嗨菲利普,现在已经更新了我的代码。是的,我在使用流函数时可能是错误的,但我希望在该列表中检查这两个字符串并返回 true 如果两者都存在于列表中.
-
这两行应该有错误
list.get(0).getName ="TEST1"; list.get(1).getName ="TEST2";,你想解决这个问题吗?
标签: java for-loop java-stream