- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
这是对“If statement - variable order for null safety”的后续问题
假设我有一个“响应”对象列表。这包括一个字符串值,说明"is"或“否”。
如果所有成员都回答“YES”,则返回“YES”。如果至少一名成员回答“否”,则返回“否”。换句话说,如果列表包含"is"和“否”响应的混合,则答案为“否”。否则,答案为"is"。(假设"is"和“否”是唯一的选择)。
String dummy_method(List<Response> myList) {
if(myList.isEmpty()) {
return null;
}
String firstResponseValue = myList.get(0).getYesOrNoValue();
if ("NO".equalsIgnoreCase(firstResponseValue)) {
return firstResponseValue;
}
return myList.stream.anyMatch(response -> !response.getYesOrNoValue().equalsIgnoreCase(firstResponseValue)) ? "NO" : firstResponseValue;
}
是否有一种“优雅”的方式来确保最后一个返回语句中的空安全:
return myList.stream.anyMatch(response -> !response.getYesOrNoValue().equalsIgnoreCase(firstResponseValue)) ? "NO" : firstResponseValue;
比如用
if ("NO".equalsIgnoreCase(firstResponseValue))
最佳答案
您可以使用以下代码段:
String dummy_method(List<Response> myList){
final boolean allMatch = myList.stream()
.map(Response::getYesOrNoValue)
.allMatch("YES"::equals);
return allMatch ? "YES" : "NO";
}
allMatch
的使用和使用倒置的anyMatch
是一样的,我只是更喜欢前者,但你也可以这样写:
String dummy_method(List<Response> myList){
final boolean anyMatch = myList.stream()
.map(Response::getYesOrNoValue)
.map(value -> value == null ? "NO" : value) // since we compare to "NO", we have to convert nulls
.anyMatch("NO"::equals); // changed from "YES" to "NO"
return anyMatch ? "NO" : "YES"; // flipped "YES" and "NO"
}
两者都短路了,所以它们的行为完全一样。
你也可以使用 for 循环:
String dummy_method(List<Response> myList){
for(Response response : myList){
if(response != null && "NO".equals(response.getYesOrNoValue())){
return "NO";
}
}
return "YES";
}
这可能是所有三个解决方案中最简单和最易读的解决方案。
关于java - 使用 anyMatch 的流中的空安全,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51854505/
我有一个 List的 HashMap即 List> result .我想检查此列表中是否存在某个键值。 例如: Name Count Marvel 10 DC 0 我
这是对“If statement - variable order for null safety”的后续问题 假设我有一个“响应”对象列表。这包括一个字符串值,说明"is"或“否”。 如果所有成员都
我有几个 predicates我都想得到满足。 能满足那些谓词的东西是少数字符串。单个字符串不必满足所有(或任何)这些谓词,但在我查看最后一个字符串后,所有谓词都必须满足。 我用 Java 表示这个问
这个问题已经有答案了: Why does this stream return no element? (1 个回答) 已关闭 7 年前。 我有一个 JPA 类“Project”,其中包含 'Empl
我有一个 Parcelle 类,它具有三个属性 num 和 nature 以及 autre_nature。和 Parcelle listParcelles 列表。我正在体验 Java 8 Stream
令我困扰的是(出于性能原因),如果不先创建流,我就无法在列表上调用 allMatch、anyMatch。所以我开始创建这样的实用方法: public static boolean anyMatch(
我想比较 list2 中的任何对象是否存在于 list1 中。 我可以遍历两个列表并使用 .contains() 比较所有元素,但我想知道是否有更有效的方法。我找到了 this我正在尝试实现建议的方法
我有一个“项目”列表,每个项目都有一个 item.posts 属性(这是一个后实例列表)。 我想通过两个属性过滤我的“项目”列表: 如果“item.isBig”并且启用了项目的任何帖子,则收集返回的S
所以如果我有一个 Name 对象并且有一个 Name (names) 类型的 ArrayList,并且我想确定我的姓名列表是否包含给定的 Name 对象 (n),我可以通过两种方式进行: boolea
我有这段代码: boolean anyMatch = ifxStopChkInqRs.getBankSvcRs().stream().anyMatch( b -> b.getStopChkInqR
我正在测试一个使用 lambda 表达式来匹配值的 java 方法。 我想测试条件的真假。 employee.getAppraisals().stream().anyMatch(appraisal::
代码: class MockDefault : public Verifyingcalls::DefaultSCI_OCB { public: MOCK_METHOD0(op, voi
List results = new ArrayList<>(); results.add(true); results.add(true); results.add(true); resul
假设我有一个枚举 enum Country { China, USA, Others } 假设我有一个list1 = ["China", "Shanghai", "Beijin
关闭。这个问题需要details or clarity .它目前不接受答案。 想改进这个问题吗? 通过 editing this post 添加细节并澄清问题. 关闭 3 年前。 Improve t
我想要以下逻辑:(我知道它不起作用,因为它不止一次消耗流)。但我不确定如何实现它。 Stream buffers = super.getBuffers().stream(); if (buffers.
我有一组货币为 Set和 RequiredCurrency 为 Set .我必须检查 currency set 中是否存在任何所需的货币。我写了BiPredicate对于如下所示,并尝试在 anyMa
我想查找字符串流是否至少出现一次另一个 String在Set .我想到了两个解决方案。 性能方面,哪种方法最好/推荐? 1) return source.stream().filter(this::s
给定三个这样的函数: private Optional abc() { return Optional.of(6); } private Optional def() { return
以下操作的 Groovy 模拟是什么? list.stream().anyMatch(b -> b == 0); 最佳答案 您的意思是查找列表是否包含元素 0? def list = [0,1,2,3
我是一名优秀的程序员,十分优秀!