筛选字段中包含映射的对象,并在映射中搜索与所提供集合中的至少一个键匹配的键



我有一个集合,我按照包含时间的字段进行排序。

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 ;

我需要找到映射包含Set-packIds中提供的密钥的实体。

我发现很难执行筛选,我只需要从实体集合中获取一个,即第一个,它将在字段中包含一个映射,该映射至少包含一个来自SetpackId作为密钥提供。

您可以使用anyMatch通过Map中存在的集合的任何密钥进行筛选,并通过findFirst获得第一个密钥

collectsPublishEntityActual
.stream()
.sorted(Comparator.comparing(PublishListEntity::getInstant)
.reversed())
.filter(publishListEntity -> packIds
.stream()
.anyMatch(k -> publishListEntity.getUrlsBundles().containsKey(k)))
.findFirst();
.

最新更新