[英]Java: Add to Guava ImmutableList if optional value is present
Looking for an ideal way to add values optionally to list. 寻找一种理想的方法来将值添加到列表中。 Final list must be immutable.
最终列表必须是不可变的。
Example- 例-
Optional<Item> optionalItem = getOptionalItemFromSomewhereElse();
List<Item> list = ImmutableList.builder()
.add(item1)
.add(item2)
.optionallyAdd(optionalItem)
.build();
I would add the optional item at the end, if it's present: 我会在最后添加可选项,如果它存在:
ImmutableList.Builder<Item> builder = ImmutableList.<Item>builder()
.add(item1)
.add(item2);
optionalItem.ifPresent(builder::add);
After that, I'd build the list: 之后,我将构建列表:
ImmutableList<Item> list = builder.build();
Assuming you're using Guava, here's a simple one-liner: 假设你正在使用番石榴,这里有一个简单的单行:
List<Item> list = Stream.concat(Stream.of(item1, item2), Streams.stream(optionalItem))
.collect(ImmutableList.toImmutableList());
Note: This requires at minimum Java 8 and Guava 21. 注意:这至少需要Java 8和Guava 21。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.