static final List<String> allowedType = asList(type1,type2);
Set<String> set1 = serviceClass.getType()
.stream()
.filter(type -> allowedType.contains(type))
.collect(toSet());
需求包括两部分,
第1部分。如果从serviceClass接收的类型具有allowedType中提到的任何服务类型,则将其添加到set1。
第2部分。完成上述操作后,我需要检查set1是否包含两种类型,如果是,则需要删除一种类型。
第1部分很简单,到目前为止,我已经使用
实现了第2部分if (set1.contains("type1" && set1.contains("typep2") {
set1.remove("type");
}
第1部分和第2部分是否可以合并为一个操作?
谢谢
答案 0 :(得分:1)
如果总是有两种类型,并且您始终可以保留其中最多一种,则可以使用limit
:
Set<String> set1 = serviceClass.getType()
.stream()
.filter(type -> allowedType.contains(type))
.limit(1)
.collect(toSet());
如果至少一个元素通过过滤器,则 limit(1)
将返回1个元素的流,否则返回空流。在我看来,这可以满足您的要求(未经测试)。