需要筛选一个项目列表并检查item.discount()<=0,以防没有找到返回可选对象类型。
这是一个为列表添加值的代码,但我不知道如果列表是空的,如何获得可选对象
Optional<List<Item>> discFit = Optional.of(items
.stream()
.filter(item -> item.getDiscount() <= 0)
.collect(Collectors.toList()));
Optional<List<Item>> discFit = Optional.of(items
.stream()
.filter(item -> item.getDiscount() <= 0)
.collect(Collectors.toList())).filter(l -> !l.isEmpty());
optional.filter
返回谓词匹配的值,否则optional.empty
但是如前所述,很少有理由将列表包装成可选的,因为列表可以是空的,也可以有值(通常返回的列表不是null
),并且将列表包装成可选的只会使其更加复杂。
如果您只需要可选
(这更有意义),那么根据您实际想要做的事情,有不同的方法来获得结果。
Optional<Item> discFit = Optional.of(items
.stream()
.filter(item -> item.getDiscount() <= 0)
.findFirst();
我有一个方法,它接受一个内部有的对象: MatchData k可以是null,有时k.getWatchListDetail()也可以是null。 我需要检查两种情况。首先,如果它能抛出NPE。 上面的实现可以做到这一点,但我尝试使用或带有链接的流,所以我可以在一行链接中完成。
但是如果serviceworkList列表为空,则变量“validate”为false。我知道allMatch的规范,如果list为空,则返回为true。 有什么建议,我可以如何重建流,如果列表列表为空,我会得到假?
我喜欢现在Java标准库中的选项。但有一个基本问题我一直碰到,但我还没想好如何用最好的(最容易读懂、最漂亮、最短的)方法解决: 当选项为空时如何从方法返回? 如果可选项为空,我如何从方法返回,而不必在方法的其余部分中使用,也不必声明额外的变量和额外的块嵌套级别? 或者如果不可能得到所有这些,那么处理这种情况的最佳方法是什么?
是否可以将此代码转换为Java8可选的单行表达式? i、 如果某个对象不是null,我需要调用一个对象方法并返回其结果,否则返回0<代码>可选。不可数()。orElse()不适合,因为它返回相同类型的对象,但我需要方法调用的结果或一些默认值。
我需要的方法,将回报的人与最高的工资。我不能用虚空法。 我尝试过类似的方法,但这不起作用:
到目前为止,我得到了indexOutOfBoundsException错误