在Java 8中使用与orElse配对的map

时间:2017-08-06 02:31:42

标签: java java-8

拥有两个不同的对象集合,例如Set say A和List say B。

如果set包含任何对象需要获取firstobject一个字符串变量说objectA.getName()或者需要获取List ObjectB.getPerson()。getName()中的firstobject,如果两个集合都为空null应该是分配给字符串。

以下是我的代码:

Optional<String> name1 =a.stream().findfirst().map(P->p.getName());

String output = null;

if (name1.ispresent()) {
    output = name1.get();    
} else {
    Optional<String> name2 =a.stream().findfirst().map(p1->p1.getPerson().getName());

    if (name2.ispresent()) {
        output = name2.get();
    }
}

我在这里获得了正确的价值。请帮助我使用orElse配对使用地图。

1 个答案:

答案 0 :(得分:0)

这个怎么样?

    Set<String> a = ...
    List<String> b = ...

    String output = a.stream()
                     .findFirst()
                     .map(p -> p.getName())
                     .orElseGet(() -> b.stream()
                                       .findFirst()
                                       .map(p1 -> p1.getPerson().getName())
                                       .orElse(null));

重要的部分是orElseGet上的Optional方法。它被懒惰地评估。