java - 从 Set Java 8 中删除一个元素
问题描述
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 部分可以合并为一个操作吗?
谢谢,
解决方案
如果总是有两种类型,并且您始终最多可以保留其中一种,则可以使用limit
:
Set<String> set1 = serviceClass.getType()
.stream()
.filter(type -> allowedType.contains(type))
.limit(1)
.collect(toSet());
limit(1)
如果至少有一个元素通过过滤器,则返回 1 个元素的流,否则返回空流。在我看来,这会给你你所要求的(未经测试)。
推荐阅读
- phpmyadmin - 如何在 phpmyadmin 中自动美化设计器
- asp.net-mvc - 如何使用实体框架打印存储在 ASP.NET MVC 中的 Viewbag 中的连接查询数据?
- postgresql - where 子句中 jsonb_path_match 和 ->> 之间的性能/逻辑差异是什么
- youtube-api - 哪个youtuve v3 api不支持etag
- python - 第 (39) 行 IndexError:弹出索引超出范围
- java - 使用java在spark中的函数之间
- c++ - 如何在贝尔曼福特算法中检测负循环?
- python - 如何强制 netwrokx 扩展图像以适合标签?
- apache-spark - 使用 PySpark 实现手套
- shell - 在循环中打印第一行和最后 n 行 | awk