gpt4 book ai didi

java - 使用流比较并查找对象

转载 作者:行者123 更新时间:2023-12-02 01:33:04 24 4
gpt4 key购买 nike

我正在尝试使用带有两个子元素的请求流来将元素与包含这些元素作为子对象的对象进行比较。

例如:

基础对象:

public class Domain {
long id;
List<Software> softwares;
List<Hardware> hardwares;
}

子对象:

public class software {
String part;
String did;
}

public class hardware {
String part;
}

我有一个包含一系列软件和一个硬件的请求,如下所示

    {
"softwares":[
{
"part":"abc",
"did":"000"
},
{
"part":"bcd",
"did":"001"
}
],
"hardware": {
"part":"caltop"
}
}

我正在尝试找到流列表,其中包含请求中的所有软件和硬件,条件是域可能拥有更多软件和硬件,但是它应该只需要包含软件和硬件就可以考虑匹配。

我从

开始
                 domains.stream()
.filter(domain -> domain.getSoftwares().contains(request.getSoftwares())
&& domain.getHardwares().stream().anyMatch(request.getHardware()))
.collect(Collectors.toList());

但这是错误的,我无法继续任何事情。我想尝试使用流来做到这一点

最佳答案

你可以这样做:

domains.stream().filter(domain -> 
domain.getSoftwares().containsAll(request.getSoftwares())
&& domain.getHardwares().contains(request.getHardware()))
.collect(Collectors.toList());

诀窍是使用 containsAll 作为软件列表,并且不需要流式传输硬件。只需使用包含。

关于java - 使用流比较并查找对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55734672/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com