Java 8映射集合,如果集合为空,则添加默认值

Bet*_*033 6 java java-8

我有一个用例,我必须返回一个至少包含1个元素的集合.传入集合可能包含0个或更多元素.

所以这可以很容易地完成

Set<ObjectB> setOfB = collectionOfA.isEmpty() ? 
        new HashSet<ObjectB>() {{ add(new ObjectB()); }}  : 
        collectionOfA
           .stream()
           .map(item -> new ObjectB(item))
           .collect(Collectors.toSet()); 
Run Code Online (Sandbox Code Playgroud)

但....

我也试图利用这个机会更好地熟悉Java 8工具和功能,所以我试着看看是否可以在没有条件测试的情况下以更类似Java 8的方式完成.

非常感谢您的意见和建议!

Lou*_*man 4

我认为您已经尽可能简单地了解了它。请记住,Java 8 仍然是同一种语言;不要过度尝试让一切都发挥作用。

我对您的代码所做的一项改进是使用Collections.singleton(new ObjectB())而不是使用尴尬且有问题的双括号初始化。