2017-08-06 74 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。 –