从 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是否包含这两种类型,如果是,则需要删除一种类型。


Part1很简单,截至目前,我已经使用part2实现了part2


if (set1.contains("type1" && set1.contains("typep2") {

    set1.remove("type");

}

有没有第1部分和第2部分可以杵化成一个单一的操作?


谢谢


慕标5832272
浏览 202回答 1
1回答

呼如林

如果总是有两种类型,并且您始终可以最多保留其中一种,则可以使用:limit&nbsp;&nbsp;&nbsp;&nbsp;Set<String>&nbsp;set1&nbsp;=&nbsp;serviceClass.getType() &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.stream() &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.filter(type&nbsp;->&nbsp;allowedType.contains(type)) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.limit(1) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.collect(toSet());limit(1)如果至少有一个元素通过过滤器,将返回 1 个元素的流,否则为空流。在我看来,这将为您提供您所要求的(未经测试)。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java