2017-08-06 76 views
-2

有两个不同的集合对象说设置使用对与否则容易地图说A和名单B.说在Java中8

如果集中包含的任何对象需要获得firstobject一个字符串变量说objectA.getName( )或者需要获取列表ObjectB.getPerson()。getName()中的第一个对象,并且如果两个集合都是空的,则应将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配对使用地图。

+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)); 

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

+0

谢谢you.its有用。 –

+0

@dhanyakrishnamoorthy如果您认为它符合您的需求,您可以将其标记为答案,请参阅https://stackoverflow.com/help/accepted-answer。 –