- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一些字符串,如果有任何一个为空,那么我需要返回空。通过 Stream 实现此目的的方法是什么?或者有什么更好的方法吗?
protected String toCombinedString(SomeClass shipment) {
String prefix1 = ofNullable(shipment)
.map(SomeClass::getBill)
.map(Bill::getPrefixString)
.orElse(null);
String prefix2 = ofNullable(shipment)
.map(SomeClass::getBill)
.map(Bill::getPrefixString)
.orElse(null);
String number1 = ofNullable(shipment)
.map(SomeClass::getBill)
.map(Bill::getNumberString)
.orElse(null);
String number2 = ofNullable(shipment)
.map(SomeClass::getBill)
.map(Bill::getNumberString)
.orElse(null);
....
return Stream.of(prefix1, number1, prefix2, number2...)
.filter(Objects::nonNull)
.reduce((a, b) -> a + "-" + b)
.orElseGet(String::new);
}
示例输出组合:
唯一通过的情况是,每个字符串都应该是非空或非空的,否则返回空
最佳答案
您似乎执行了一个三元运算,例如:
return prefix == null || number == null ? null : prefix + "-" + number;
在问题中进行编辑后,条件是只有 Bill
实体中的所有此类 String
类型的属性才会在结果中被考虑。您可以制定一个方法来从所有属性中提取 String
,如下所示:
protected String toCombinedString(SomeClass shipment) {
return Optional.ofNullable(shipment)
.map(SomeClass::getBill)
.map(bill -> extractAttributes(bill, Bill::getNumberString, Bill::getPrefixString)) // use this further
.orElse(null);
}
private String extractAttributes(Bill entity, Function<Bill, String>... mappers) {
List<String> attributes = Arrays.stream(mappers)
.map(function -> function.apply(entity))
.collect(Collectors.toList());
return attributes.stream().anyMatch(s -> s == null || s.isEmpty()) ?
null : String.join("-", attributes);
}
关于如果任一值为 null,则 Java Stream 返回 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59141335/
使用cats.Semigroup可以这样写: import cats.Semigroup import cats.implicits._ val l1: String Either Int = Lef
所以我的网页中有两个字段,一个用于电话号码,另一个用于电子邮件地址,我需要使用 JavaScript 而不是 jQuery 来填写其中之一。我在这里找到的大多数答案都是针对 jQuery 的,任何使用
我有一个类型,它的形状是这样的: val myType: Future[Either[MyError, TypeA]] = // some value 我知道我可以对此进行模式匹配并获得 Right
我的印象是某处有 Either a 的实例,但我似乎找不到它。我尝试导入 Control.Monad、Control.Monad.Instances 和 Data.Either,如图所示 module
我在一个宠物 Scala 项目中遇到了一个我真的不知道如何克服的情况。 以下示例显示了我的问题。 import scala.concurrent.Future import scala.concurr
我是一名优秀的程序员,十分优秀!