第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

如何使用 Stream 從 java Map 創(chuàng)建多個(gè)列表?

如何使用 Stream 從 java Map 創(chuàng)建多個(gè)列表?

蕪湖不蕪 2023-09-20 17:23:22
我是 Java 8 Stream API 的新手。我想知道是否可以根據(jù)地圖中的鍵值創(chuàng)建多個(gè)列表?例如。如果我的地圖是{"Developer", Developer; "Manager", Manager; "Lead", Lead; "Director", Director}我想根據(jù)關(guān)鍵值從地圖創(chuàng)建開發(fā)人員列表、經(jīng)理列表、領(lǐng)導(dǎo)列表和總監(jiān)列表。如有任何幫助,我們將不勝感激。
查看完整描述

3 回答

?
楊魅力

TA貢獻(xiàn)1811條經(jīng)驗(yàn) 獲得超6個(gè)贊

使用Collectors.groupingBy,您可以生成從鍵到值列表的映射,前提是您可以根據(jù)值計(jì)算鍵?;蛘?,您可以使用Collectors.toMap,前提是您可以從上游元素計(jì)算 Key 和 Value。您可能需要帶有合并功能的 toMap 版本,因?yàn)檫@將允許您處理具有相同值的多個(gè)鍵(通過將它們放在一個(gè)列表中)。

編輯:如果您想要排序,則toMap和groupingBy
的重載允許您提供 mapFactory (?) ,例如。Supplier<Map>TreeMap::new


查看完整回答
反對(duì) 回復(fù) 2023-09-20
?
MMMHUHU

TA貢獻(xiàn)1834條經(jīng)驗(yàn) 獲得超8個(gè)贊

請(qǐng)使用 Collectors.groupBy() 查找以下代碼:


                List<Details> employeeList = Arrays.asList(new Details("Pratik", "Developer"), new Details("Rohit", "Manager"), new Details("Sonal", "Developer"), new Details("Sagar", "Lead"), new Details("Sanket", "Lead"));       


                Map<String, List<Details>> collect = employeeList.stream().collect(Collectors.groupingBy(x-> x.getDesignation()));

                System.out.println("Checking details "+ collect);


查看完整回答
反對(duì) 回復(fù) 2023-09-20
?
慕尼黑8549860

TA貢獻(xiàn)1818條經(jīng)驗(yàn) 獲得超11個(gè)贊

要反轉(zhuǎn)映射,使其不同的值成為鍵,并將其鍵添加到相應(yīng)值下的集合中,請(qǐng)groupingBy()在映射條目上使用。原始映射中的值必須正確實(shí)現(xiàn)equals()并hashCode()用作新哈希表中的鍵,這一點(diǎn)很重要。


static <K, V> Map<V, Set<K>> invert(Map<? extends K, ? extends V> original) {

  return original.entrySet().stream()

    .collect(Collectors.groupingBy(

      Map.Entry::getValue, 

      Collectors.mapping(Map.Entry::getKey, Collectors.toSet())

    ));

}

如果你想對(duì)組進(jìn)行排序,你可以創(chuàng)建一個(gè)專門的“下游”收集器:


static <K, V> Map<V, SortedSet<K>> invert(

    Map<? extends K, ? extends V> original, 

    Comparator<? super K> order) {


  Collector<K, ?, SortedSet<K>> toSortedSet = 

     Collectors.toCollection(() -> new TreeSet<>(order));

  return original.entrySet().stream()

    .collect(Collectors.groupingBy(

      Map.Entry::getValue, 

      Collectors.mapping(Map.Entry::getKey, toSortedSet)

    ));

}


查看完整回答
反對(duì) 回復(fù) 2023-09-20
  • 3 回答
  • 0 關(guān)注
  • 132 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)