亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

將哈希映射值交換為鍵

將哈希映射值交換為鍵

守候你守候我 2023-09-13 18:09:09
我有一個哈希圖{k1 = {v1, v2},k2 = {v2},k3 = {v1}}我的要求是構建一個新的哈希映射,其中舊映射中的值作為鍵,鍵作為值列表。新的 hasmap 看起來像{v1 = {k1, k3},v2 = {k1, k2}}
查看完整描述

2 回答

?
至尊寶的傳說

TA貢獻1789條經驗 獲得超10個贊

我重新創建了您的示例,這應該可以滿足您的要求。如果對代碼還有任何其他問題,請告訴我。


HashMap<String,List<String>> hashMap = new HashMap<>();


    hashMap.put("k1", Arrays.asList("v1","v2"));

    hashMap.put("k2", Arrays.asList("v2"));

    hashMap.put("k3", Arrays.asList("v1"));


    HashMap<String,List<String>> result = new HashMap<>();


    hashMap.forEach((s, strings) ->{

        for (String element : strings){

            List<String> tempList = new ArrayList<>();


            if(result.containsKey(element)){

                tempList = result.get(element);

            }


            tempList.add(s);

            result.put(element, tempList);

        }

    });


查看完整回答
反對 回復 2023-09-13
?
UYOU

TA貢獻1878條經驗 獲得超4個贊

假設你有一個Map<String,List<String>> myMap = ...


    Map<String,List<String>> reversed = 

            myMap.values().stream().flatMap(List::stream).distinct()

            .map(v ->  new AbstractMap.SimpleEntry<>(v,

                                    myMap.entrySet().stream()

                                    .filter(e -> e.getValue().contains(v))

                                    .map(Map.Entry::getKey)

                                    .collect(Collectors.toList())))

            .collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue));

    System.out.println(reversed);


查看完整回答
反對 回復 2023-09-13
  • 2 回答
  • 0 關注
  • 121 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號