【问题标题】:Compare two multimaps and replace/remove values比较两个多图并替换/删除值
【发布时间】:2018-03-26 15:03:54
【问题描述】:

我有两个带有 ID 和名称的多图,一个包含我从远程服务获得的信息,第二个包含我在本地数据库中的信息。我需要比较和同步它们。

Multimap<Long, String> remote
Multimap<Long, String> localDB

我们可以假设 id 始终相同,但名称可能不同,例如:

remote = {1 = [Tom], 2 = [Bob , Ron], 3 = [Philip]}
local = {1 = [Tom], 2 = [Johan, Robert], 3 = [Susan]}

而我期望得到的是:

local = {1 = [Tom], 2 = [Bob , Ron], 3 = [Philip]}

我怎样才能得到它?

【问题讨论】:

  • 我已经检查了那个帖子,它没有提到我的问题
  • 您的意思是要将远程数据放入本地地图?
  • 是的,但仅限于那些不匹配的以便同步它们
  • @Marret 要将一张地图放入另一张地图,您可以调用 putAll 方法并将另一张地图作为参数。如果存在具有相同键的值,则键的值将被覆盖。

标签: java multimap


【解决方案1】:

从上面的 cmets 扩展选项并假设您只是将远程同步到本地,您至少有三个不同的选项:

  • 将一个列表设置在另一个列表上:local = remote;
  • 从本地删除所有不在远程的值,然后执行local.putAll(remote);
  • 将内容从远程复制到本地:local = ImmutableListMultimap.copyOf(remote);

【讨论】:

    猜你喜欢
    • 2020-12-28
    • 2016-06-20
    • 1970-01-01
    • 2021-12-07
    • 2016-07-06
    • 1970-01-01
    • 2020-03-16
    • 1970-01-01
    • 2013-10-11
    相关资源
    最近更新 更多