为了账号安全,请及时绑定邮箱和手机立即绑定

如何从两个哈希图中检索公用键值对

如何从两个哈希图中检索公用键值对

吃鸡游戏 2021-04-11 09:27:01
我有两个哈希图:Map<String, String> mapA = new HashMap<String, String>();Map<String, String> mapB = new HashMap<String, String>();TreeSet<String> uniquekeys = new TreeSet<String>();mapA.put("1","value1");mapA.put("2","value2");mapA.put("3","value3");mapA.put("4","value4");mapA.put("5","value5");mapA.put("6","value6");mapA.put("7","value7");mapA.put("8","value8");mapA.put("9","value9");mapB.put("1","value1");mapB.put("2","value2");mapB.put("3","value3");mapB.put("4","value4");mapB.put("5","value5");为了从两个哈希图中获取公用键值对,我编写了以下逻辑:uniquekeys.addAll(mapA.keySet());uniquekeys.addAll(mapB.keySet());然后使用中的键treeset: uniquekeys 从mapA和mapB中检索唯一的键值对。但这并没有给我mapA中所有键的详细信息。我知道这种方式是有缺陷的,但我无法提出适当的逻辑。谁能让我知道如何将mapA和mapB中常见的键值对检索到新的HashMap中?
查看完整描述

3 回答

?
动漫人物

TA贡献1815条经验 获得超10个赞

您可以通过以下方式使用Java 8 Streams进行操作:


Map<String, String> commonMap = mapA.entrySet().stream()

        .filter(x -> mapB.containsKey(x.getKey()))

        .collect(Collectors.toMap(x -> x.getKey(), x -> x.getValue()));


查看完整回答
反对 回复 2021-04-28
?
MMTTMM

TA贡献1869条经验 获得超4个赞

尝试以下逻辑:


Map<String, String> common = new HashMap<String, String>();

        for(String key : mapA.keySet()) {

            if(mapB.get(key) !=null ) {

                if(mapA.get(key).equals(mapB.get(key))) {

                    common.put(key, mapA.get(key));

                }

            }

        }


查看完整回答
反对 回复 2021-04-28
?
大话西游666

TA贡献1817条经验 获得超14个赞

使用番石榴实用程序集

Set<String> intersectionSet = Sets.intersection(firstSet, secondSet);


查看完整回答
反对 回复 2021-04-28
  • 3 回答
  • 0 关注
  • 217 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信