gpt4 book ai didi

java - 在 map 中查找不在 pojo 列表中的值

转载 作者:行者123 更新时间:2023-12-01 14:27:51 25 4
gpt4 key购买 nike

在我的 REST api 中,我正在接受一个看起来像这样的 map -

Map<String, Object> newSettings -

{
"showGrantsInGrid": false,
"isPrimeUser": true,
"hasRegistered": true
}

我需要将这些设置与现有设置列表进行比较。该列表看起来像这样 -

List<Setting> currentSettings -

[
{
"settingName": "showGrantsInGrid",
"settingValue": "false",
},
{
"settingName": "isPrimeUser",
"settingValue": "true",
}
]

这是设置对象的样子 -

public class Setting {
private String settingName;

private String settingValue;

// getters and setters ...

我试图弄清楚如何找到发送到 REST api 的 map 中不在设置列表中的条目。在上面的例子中,它应该是“hasRegistered”。

到目前为止,我尝试过的所有方法都没有奏效。有人有什么想法吗?

最佳答案

你可以这样做:

Set<String> settingNames = currentSettings.stream()
.map(Setting::getSettingName)
.collect(Collectors.toSet());

然后

newSettings.keySet().stream()
.filter(key->!settingNames.contains(key))
.collect(Collectors.toList());

一步一步:

currentSettings.stream()
.collect(Collectors
.collectingAndThen(Collectors
.mapping(Setting::getSettingName, Collectors.toSet()),
settingName -> newSettings.keySet().stream()
.filter(key -> !settingName.contains(key))
.collect(Collectors.toList())
)
);

注意:与上一个相比,我不确定它的性能。

关于java - 在 map 中查找不在 pojo 列表中的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60840714/

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