如何解决过滤包含字段中的地图的对象,并在地图中搜索与提供的集合中的至少一个键匹配的键
我有一个集合,该集合按包含时间的字段排序。
collectsPublishEntityActual
.stream()
.sorted(Comparator.comparing(PublishListEntity::getInstant)
.reversed())
.filter(publishListEntity -> publishListEntity.getUrlsBundles()
.entrySet()
.stream()
.filter(k -> k.getKey().equals()) ?????????
)
....
public class PublishListEntity implements Serializable {
private Map<PackId,String> urlsPack;
private Instant instant;
class PackId implements Serializable {
private String field1;
private String field2;
}
我也有一组键,键是一个由2个字符串字段(“ F”,“ 1”)组成的对象。
Set<PackId> packIds ;
我需要找到地图包含设置packIds 中提供的键的实体。
我发现执行过滤非常困难,我只需要从实体集合中获取一个,第一个实体,它将在字段中包含一个映射,该映射至少包含一个来自 设置 packId作为键提供。
解决方法
您可以使用anyMatch
按Map中存在的任何键集进行过滤,并按findFirst
获取第一个键
collectsPublishEntityActual
.stream()
.sorted(Comparator.comparing(PublishListEntity::getInstant)
.reversed())
.filter(publishListEntity -> packIds
.stream()
.anyMatch(k -> publishListEntity.getUrlsBundles().containsKey(k)))
.findFirst();
.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。