2017-04-13 49 views
1

如果我通過流加入了幾個字符串,並且沒有任何要加入的結果,那麼結果是一個空字符串,如「」。如果它是空的,是否有可能添加默認值?例如。 「 - 」流加入結果默認值

someList.stream() 
       .filter(a -> a.getKey() != null) 
       .map(a -> a.getKey()) 
       .sorted() 
       .collect(Collectors.joining(", ")); 

更新: 我知道有其他的方法來做到這一點,但我只是想知道的「」(空字符串)的默認值可以被覆蓋

+0

爲什麼不添加一個像'if(outString.isEmpty())return「 - 」;「;' – freedev

+0

這樣的測試我可以但我只是想知道是否可能 – user489872

+0

只是在生成字符串後添加檢查。 – freedev

回答

2
String result = someList.stream() 
     .filter(a -> a.getKey() != null) 
     .map(a -> a.getKey()) 
     .sorted() 
     .reduce((a,b) -> a + ", " + b).orElse("-"); 

哪裏我們使用reduce而不是collect。

編輯:第一個解決方案確實沒有按預期工作。這是一個。

+2

這將不起作用,因爲對於2個元素它將返回「-A,B ,「 – Beri

+0

我在哪裏添加代碼? – user489872

+0

編輯答案以清楚說明 –

1

爲什麼單單不加像if (outString.isEmpty()) return "-";

測試只是你的代碼後

String outString = someList.stream() 
      .filter(a -> a.getKey() != null) 
      .map(a -> a.getKey()) 
      .sorted() 
      .collect(Collectors.joining(", ")); 

if (outString.isEmpty()) 
    return "-"; 
else 
    return outString;