【问题标题】:Merge two lists based on two or more filters基于两个或更多过滤器合并两个列表
【发布时间】:2021-12-17 08:51:43
【问题描述】:

您好,如果我必须合并基于两个或更多过滤器的两个列表,你们可以告诉我该怎么做。我试过但无法弄清楚。先感谢您。请在下面找到我尝试过的代码 -

Stream.of(entity.getUsers(), existingEntity.getUsers())
                        .flatMap(List::stream)
                        .collect(Collectors.toM`enter code here`ap((AuthorizedUsersEntity::getLightHouseId),
                                d -> d,
                                (AuthorizedUsersEntity x, AuthorizedUsersEntity y) -> x == null ? y : x))
                        .values());

我也想使用另一个属性过滤掉。请在下面找到我期望合并列表的示例

UpdatedUsers - [{"a":"1"},{"b":"2"}, {"c":"3"}],

现有用户 -[{"a":"2"},{"b":"3"}, {"c":"4"},{"d":"5"}}]

合并列表 - [{"a":"1"},{"b":"2",},{"c":"3"},{"d":"5"}]

【问题讨论】:

  • “基于过滤器合并”是什么意思?
  • 您能提供您尝试过的任何代码吗?或者至少输入数据和预期输出?这应该有助于使您的问题不那么神秘。
  • 这是我尝试过的代码 - Stream.of(entity.getUsers(), existingEntity.getUsers()) .flatMap(List::stream) .collect(Collectors.toMap((AuthorizedUsersEntity:: getLightHouseId), d -> d, (AuthorizedUsersEntity x, AuthorizedUsersEntity y) -> x == null ? y : x)) .values());
  • 所以我有 2 个列表 - UpdatedUsers - [{"a":"1"},{"b":"2", "c":"3"}],现有用户 -[ {"a":"2"},{"b":"3", "c":"4",{"d":"5"}}].. 我需要如下组合列表 - 合并列表 - [{"a":"1"},{"b":"2",},{"c":"3"},{"d":"5"}] 我需要根据在两个属性上,而不仅仅是一个。
  • 请澄清您的具体问题或提供其他详细信息以准确突出您的需求。正如目前所写的那样,很难准确地说出你在问什么。

标签: java list lambda merge stream


【解决方案1】:

在这里使用Map 更容易...

var map = HashMap<String,String>()
for(var updatedUser : updatedUsers) {
   map.put(updateUser.key, updatedUser.value)
}

for(var existingUser: existingUsers) {
  map.putIfAbsent(existingUser.key, existingUser.value)
}

// The merged list now contains the results
var mergedList = new ArrayList();
for(vap entry = map.entrySet()) {
  mergedList.add(new User(entry.getKey(), entry.getValue()))
}

var result = mergedList.stream().filter( <firstCondition> ).filter( <secondCondition> ).collectToList();

【讨论】:

    猜你喜欢
    • 2021-01-05
    • 1970-01-01
    • 2013-03-28
    • 2011-12-20
    • 2021-06-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多