【问题标题】:Get sub Map based on a list of keys [duplicate]根据键列表获取子地图[重复]
【发布时间】:2014-06-09 10:54:51
【问题描述】:

使用现有 Map 的 subKeySet 获取新地图的最快方法是什么?

例子:

现有地图是:

1|"one"

2|"two"

3|"three"

密钥集是:1,2,3

然后我克隆这个键集并删除第一个值:2,3 获取此地图的最快方法是什么:

2|"two"

3|"three"

使用新的密钥集

【问题讨论】:

  • 哇,我的问题是重复一年后提出的问题

标签: java


【解决方案1】:

Guava 有专门用于此目的的Maps.filterKeys() 方法:

Maps.filterKeys(map, Predicates.in(keys));

【讨论】:

    【解决方案2】:

    如果您删除了不必要的密钥,您已经拥有它了?

    否则,创建一个 entryset 循环,并将所需的键/值对添加到您的新/其他哈希映射中。

    您还可以使用 sortedmap 或 navigablemap,它具有过滤范围的附加功能。

    或者如果使用 jdk 8,您可以使用其超酷的新功能:

    m.entrySet().stream()
        .filter(p -> p.getKey() > 1) // or whatever you want
        .collect(toMap(Entry::getKey, Entry::getValue));
    

    【讨论】:

    • 这需要我使用我不想这样做的循环。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-05-03
    • 1970-01-01
    • 2013-05-20
    • 2013-04-18
    • 1970-01-01
    • 2021-07-29
    • 1970-01-01
    相关资源
    最近更新 更多