在Java8中与orElse成对使用map
有两个不同的对象集合,比如说集合,比如说A,列表,比如B 如果集合包含任何对象,则需要获取第一个对象一个字符串变量,比如objectA.getName(),否则需要获取列表ObjectB.getPerson().getName()中的第一个对象,如果集合都为空,则应将null分配给该字符串 下面是我的代码:在Java8中与orElse成对使用map,java,java-8,Java,Java 8,有两个不同的对象集合,比如说集合,比如说A,列表,比如B 如果集合包含任何对象,则需要获取第一个对象一个字符串变量,比如objectA.getName(),否则需要获取列表ObjectB.getPerson().getName()中的第一个对象,如果集合都为空,则应将null分配给该字符串 下面是我的代码: Optional<String> name1 =a.stream().findfirst().map(P->p.getName()); String output = n
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();
}
}
可选名称1=a.stream().findfirst().map(P->P.getName());
字符串输出=null;
if(name1.ispresent()){
output=name1.get();
}否则{
可选名称2=a.stream().findfirst().map(p1->p1.getPerson().getName());
if(name2.ispresent()){
output=name2.get();
}
}
这里我得到了正确的值。请帮助我与orElse一起使用map来达到同样的效果。这个怎么样
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));
Set a=。。。
列表b=。。。
字符串输出=a.stream()
.findFirst()
.map(p->p.getName())
.orElseGet(()->b.stream()
.findFirst()
.map(p1->p1.getPerson().getName())
.orElse(null));
重要的部分是
可选
上的orElseGet
方法。它的评估是懒惰的。如果这有效,为什么要改变它?@dhanyakrishnamoorthy如果你认为它适合你的需要,你可以将它标记为答案,请参阅。