gpt4 book ai didi

Java 流 : How to find id from json?

转载 作者:行者123 更新时间:2023-12-04 08:43:42 25 4
gpt4 key购买 nike

这个问题在这里已经有了答案:





Static context cannot access non-static in Collectors

(2 个回答)



Java 8 Stream non static method stream cannot be referenced

(1 个回答)



Java 8 stream “Cannot use this in a static context”

(2 个回答)


10 个月前关闭。




我有一个如下的 json 和一个类似的类 MyClient :

[
{
"id": 2,
"partners": [
{
"configuration": {
"connect-fleet-sync": false
},
"id": "cf89cbc5-0886-48cc-81e7-ca6123bc4857"
},
{
"configuration": {
"connect-fleet-sync": false
},
"id": "cf89cbc5-0886-48cc-81e7-ca6123bc4967"
}
]
},
{
"id": 3,
"partners": [
{
"configuration": {
"connect-fleet-sync": false
},
"id": "c3354af5-16e3-4713-b1f5-a5369c0b13d6"
}
]
}
]
我需要一个方法来接收 uuid 并返回 id .
例如 findClientId("cf89cbc5-0886-48cc-81e7-ca6123bc4967")然后它返回 2 :
这是我尝试过的:
  public static void findClientId(String partnerId, MyClient[] allMyClients) {
Stream.of(allMyClients)
.map(MyClient::getPartners)
.forEach(Partner::getPartnerId)
.filter(
partner ->partner.id.equals(partnerId)))
.map(MyClient::getId);
}
但它提示 Non-static method cannot be referenced from a static context在线 .forEach(Partner::getPartnerId)

最佳答案

一、Stream.forEach是空的。您不能调用 .filter或之后的任何其他方法。除此之外,.map(MyClient::getPartners)会让你输MyClient管道中的信息 MyClient.getId你要的那个。您必须使用嵌套流来过滤每个客户端的合作伙伴列表。
你的代码应该是:

public static String findClientId(String partnerId, MyClient[] allMyClients) {
return Stream.of(allMyClients)
.filter(client -> client.getPartners()
.stream()
.anyMatch(partner -> partner.getPartnerId().equals(partnerId)))
.map(MyClient::getId)
.findAny()
.orElse(null); // change to whatever is desired
}

关于Java 流 : How to find id from json?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64437573/

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