欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Java中List轉(zhuǎn)換成Map的兩種實(shí)現(xiàn)方式

 更新時間:2025年09月23日 08:53:30   作者:我需要打球  
Java中List轉(zhuǎn)Map常用Stream API,通過collect(Collectors.toMap())實(shí)現(xiàn),需明確鍵值規(guī)則并處理重復(fù)鍵沖突,支持靈活擴(kuò)展

在 Java 中,將List轉(zhuǎn)換為Map是常見操作,通常需要指定Map的鍵(Key)和值(Value),常用工具類有Java 8 Stream API

一、Java8 Stream API

package list2map;

import java.util.*;
import java.util.stream.Collectors;

// 定義實(shí)體類
class User {
    private Long id;
    private String name;
    
    // 構(gòu)造函數(shù)、getter、setter省略
    public User(Long id, String name) {
        this.id = id;
        this.name = name;
    }
    public Long getId() { return id; }
    public String getName() { return name; }
}

public class ListToMapExample {
    public static void main(String[] args) {
        // 準(zhǔn)備List數(shù)據(jù)
        List<User> userList = List.of(
            new User(1L, "Alice"),
            new User(2L, "Bob"),
//            new User(1L, "Bob"),如果兩個id都是1,那么Bob會覆蓋Alice
            new User(3L, "Charlie")
        );
        // 轉(zhuǎn)換為Map<id, User>
        Map<Long, User> userMap = userList.stream()
            .collect(Collectors.toMap(
                User::getId,  // 鍵:User對象的id
                user -> user,   // 值:User對象本身
                    (oldValue,newValue) -> newValue, //沖突時取新值
                    TreeMap::new //指定Map的實(shí)現(xiàn)類

            ));
        //Map集合的遍歷
        Set<Map.Entry<Long, User>> entries = userMap.entrySet();
        for (Map.Entry<Long, User> entry : entries) {
            System.out.println("entry.getKey() = " + entry.getKey());
            System.out.println("entry.getValue() = " + entry.getValue().getName());
        }
    }
}

二、傳統(tǒng)方式

import java.util.HashMap;
import java.util.Map;

Map<Long, User> userMap = new HashMap<>();
for (User user : userList) {
    userMap.put(user.getId(), user);  // 手動put鍵值對
}

三、總結(jié)

  • 推薦方式:使用Stream.collect(Collectors.toMap()),代碼簡潔且支持靈活配置。
  • 核心要素:明確鍵(Key)、值(Value)的提取規(guī)則,處理可能的重復(fù)鍵沖突。
  • 擴(kuò)展場景:可根據(jù)需求轉(zhuǎn)換為不同的Map實(shí)現(xiàn)類,或只保留對象的部分屬性作為值。

以上為個人經(jīng)驗(yàn),希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • SpringBoot快速配置數(shù)據(jù)源的方法

    SpringBoot快速配置數(shù)據(jù)源的方法

    這篇文章主要介紹了SpringBoot快速配置數(shù)據(jù)源的方法,幫助大家更好的理解和使用springboot框架,感興趣的朋友可以了解下
    2020-10-10
  • Java代碼中與Lua相互調(diào)用實(shí)現(xiàn)詳解

    Java代碼中與Lua相互調(diào)用實(shí)現(xiàn)詳解

    這篇文章主要為大家介紹了Java代碼中與Lua相互調(diào)用實(shí)現(xiàn)詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-08-08
  • Spring中Bean的作用域與生命周期詳解

    Spring中Bean的作用域與生命周期詳解

    這篇文章主要給大家介紹了Spring中Bean的生命周期和作用域及實(shí)現(xiàn)方式的相關(guān)資料,文中介紹的非常詳細(xì),對大家具有一定的參考價值,需要的朋友們下面來一起看看吧
    2021-08-08
  • Java如何利用策略模式替代if/else語句

    Java如何利用策略模式替代if/else語句

    這篇文章主要介紹了Java如何利用策略模式替代if/else語句,幫助大家優(yōu)化自己的代碼,提高程序運(yùn)行效率,感興趣的朋友可以了解下
    2020-09-09
  • Java實(shí)現(xiàn)二叉樹的建立、計(jì)算高度與遞歸輸出操作示例

    Java實(shí)現(xiàn)二叉樹的建立、計(jì)算高度與遞歸輸出操作示例

    這篇文章主要介紹了Java實(shí)現(xiàn)二叉樹的建立、計(jì)算高度與遞歸輸出操作,結(jié)合實(shí)例形式分析了Java二叉樹的創(chuàng)建、遍歷、計(jì)算等相關(guān)算法實(shí)現(xiàn)技巧,需要的朋友可以參考下
    2019-03-03
  • Java 向上轉(zhuǎn)型和向下轉(zhuǎn)型的詳解

    Java 向上轉(zhuǎn)型和向下轉(zhuǎn)型的詳解

    這篇文章主要介紹了 Java 向上轉(zhuǎn)型和向下轉(zhuǎn)型的詳解的相關(guān)資料,需要的朋友可以參考下
    2017-04-04
  • Java中的單向鏈表詳解

    Java中的單向鏈表詳解

    這篇文章主要介紹了Java中的單向鏈表詳解,單向鏈表又叫單鏈表,是鏈表的一種,由節(jié)點(diǎn)構(gòu)成,head指針指向第一個稱為表頭節(jié)點(diǎn),而終止指向最后一個null指針,需要的朋友可以參考下
    2024-01-01
  • 在idea中添加JDK的簡單圖文教程

    在idea中添加JDK的簡單圖文教程

    這篇文章主要介紹了如何在IntelliJ IDEA中配置JDK,講解了打開軟件、進(jìn)入Project Structure、選擇SDKs、添加或選擇JDK版本,最后確認(rèn)并重啟IDEA,需要的朋友可以參考下
    2024-12-12
  • C++和Java命令行繪制心形圖案

    C++和Java命令行繪制心形圖案

    這篇文章主要為大家詳細(xì)介紹了C++和Java命令行繪制心形圖案,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-04-04
  • java 使用poi 導(dǎo)入Excel數(shù)據(jù)到數(shù)據(jù)庫的步驟

    java 使用poi 導(dǎo)入Excel數(shù)據(jù)到數(shù)據(jù)庫的步驟

    這篇文章主要介紹了java 使用poi 導(dǎo)入Excel 數(shù)據(jù)到數(shù)據(jù)庫的步驟,幫助大家更好的理解和使用Java,感興趣的朋友可以了解下
    2020-12-12

最新評論