給定Map
將字符串映射到List
,是否有方法使用Java Streams返回布爾值,其中TRUE表示一個或多個列表有元素?如果地圖中的所有列表均爲空,則返回FALSE。如果映射中的所有列表值都爲空/非空,則使用流返回布爾值
Map< String , List<String> > map = …
可以使用Streams替換這個傳統的代碼嗎?
// See if any diffs were found. Loop through the Map, look at each List of diffs to see if non-empty.
boolean anyElementsInAnyList = false;
for (List<String> list : map.values()) {
if (!list.isEmpty()) {
anyElementsInAnyList = true;
break;
}
}
請注意,我們可以在首次發現後突破檢查。無需檢查所有地圖值(所有列表)。如果出於效率考慮,Stream可以做同樣的停止首次查找(「短路」操作),那將會很好。
你的意思是這個java-stream嗎? http://www.oracle.com/technetwork/articles/java/ma14-java-se-8-streams-2177646.html –
在你循環中使用布爾代替布爾值的任何理由? – Holger