最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java中Map轉(zhuǎn)List及List轉(zhuǎn)Map的方法(簡(jiǎn)單好用!)

 更新時(shí)間:2023年07月28日 09:35:48   作者:九尾狐的yi巴  
這篇文章主要給大家介紹了關(guān)于Java中Map轉(zhuǎn)List及List轉(zhuǎn)Map的相關(guān)資料,可以使用Java 8的Stream API將Java Map轉(zhuǎn)換為L(zhǎng)ist,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考下

1. Map轉(zhuǎn)List

1.1 將Map的key轉(zhuǎn)換為L(zhǎng)ist

    public void testMapToList(){
        // 創(chuàng)建一個(gè)Map
        Map<String, Integer> map = new HashMap<>();
        map.put("key1", 1);
        map.put("key2", 2);
        map.put("key3", 3);
        // 將Map的key轉(zhuǎn)換為L(zhǎng)ist
        List<String> keyList = new ArrayList<>(map.keySet());
        // 打印結(jié)果
        System.out.println(keyList);
    }

輸出:

[key1, key2, key3]

1.2 將Map的value轉(zhuǎn)換為L(zhǎng)ist

    public void testMapToList(){
        // 創(chuàng)建一個(gè)Map
        Map<String, Integer> map = new HashMap<>();
        map.put("key1", 1);
        map.put("key2", 2);
        map.put("key3", 3);
        // 將Map的value轉(zhuǎn)換為L(zhǎng)ist
        List<Integer> keyList = new ArrayList<>(map.values());
        // 打印結(jié)果
        System.out.println(keyList);
    }

輸出:

[1, 2, 3]

所以說這兩個(gè)方法的區(qū)別就是在new ArrayList<>時(shí)選擇使用map.values()還是map.keySet()

2. List轉(zhuǎn)Map

2.1 最普通的List轉(zhuǎn)Map

    public void testListToMap(){
        // 創(chuàng)建一個(gè)List
        List<String> list = new ArrayList<>();
        list.add("key1");
        list.add("key2");
        list.add("key3");
        // 將List轉(zhuǎn)換為Map
        Map<String, Integer> map = list.stream()
                .collect(Collectors.toMap(key -> key, value -> 0, (v1, v2) -> v1)); // value里默認(rèn)放一個(gè)0
        // 打印結(jié)果
        System.out.println(map);
    }

輸出:

{key1=0, key2=0, key3=0}

要特別注意里面的(v1, v2) -> v1) 必須帶上。如果你的key里重復(fù)的時(shí)候沒這句話會(huì)異常:java.lang.IllegalStateException: Duplicate key 0

(v1, v2) -> v1 表示當(dāng)出現(xiàn)重復(fù)的鍵時(shí),選擇保留原始的值 v1,而忽略新值 v2。如果你希望在出現(xiàn)重復(fù)的鍵時(shí)采取其他操作,例如取最大值、取最小值或者進(jìn)行求和等操作,您可以在合并函數(shù)中編寫相應(yīng)的邏輯。例如,可以使用(v1, v2) -> Math.max(v1, v2)來選擇兩個(gè)值中的最大值。

2.2 List轉(zhuǎn)Map同時(shí)保證順序

假如我的list的放入順序變了:

List<String> list = new ArrayList<>();
    list.add("key3");
    list.add("key2");
    list.add("key1");

用第一個(gè)方式得到的Map是亂序的,如果想保證順序,可以借助LinkedHashMap.

public void testListToMap(){
        // 創(chuàng)建一個(gè)List
        List<String> list = new ArrayList<>();
        list.add("key3");
        list.add("key2");
        list.add("key1");
        // 將List轉(zhuǎn)換為Map
        Map<String, Integer> map = list.stream()
                .collect(Collectors.toMap(key -> key, value -> 0, (v1, v2) -> v1, LinkedHashMap::new)); // value里默認(rèn)放一個(gè)0
        // 打印結(jié)果
        System.out.println(map);
    }

輸出:

{<!-- -->key3&#61;0, key2&#61;0, key1&#61;0}

2.3 List轉(zhuǎn)Map(對(duì)象類型且key拼接)

假如有這個(gè)User

@Data
    @AllArgsConstructor
    @NoArgsConstructor
    @Builder
    public static class User{
        private Integer id;
        private String name;
        private Integer age;
    }

想要id拼接_拼接name作為key,age作為value,轉(zhuǎn)Map。代碼:

public void testListToMap2() {
        // 創(chuàng)建一個(gè)List
        List<User> list = new ArrayList<>();
        list.add(new User(1,"Tom",10));
        list.add(new User(2,"Tim",10));
        list.add(new User(3,"Jim",10));
        // 將List轉(zhuǎn)換為Map
        Map<String, Integer> map = list.stream()
                .collect(Collectors.toMap(key -> key.getId()+"_"+key.getName(), value -> value.getAge(), (v1, v2) -> v1)); 
        System.out.println(JSON.toJSON(map));
    }

輸出:

{"3_Jim":10,"2_Tim":10,"1_Tom":10}

2.4 List轉(zhuǎn)Map(id作為key,每個(gè)元素作為value)

public void testListToMap2() {
        // 創(chuàng)建一個(gè)List
        List<User> list = new ArrayList<>();
        list.add(new User(1,"Tom",10));
        list.add(new User(2,"Tim",10));
        list.add(new User(3,"Jim",10));
        // 將List轉(zhuǎn)換為Map
        Map<Integer, User> map = list.stream()
                .collect(Collectors.toMap(User::getId, value -> value, (v1, v2) -> v1));
        System.out.println(JSON.toJSON(map));
    }

輸出:

{
    "1": {
        "name": "Tom",
        "id": 1,
        "age": 10
    },
    "2": {
        "name": "Tim",
        "id": 2,
        "age": 10
    },
    "3": {
        "name": "Jim",
        "id": 3,
        "age": 10
    }
}

完結(jié)撒花~

總結(jié)

到此這篇關(guān)于Java中Map轉(zhuǎn)List及List轉(zhuǎn)Map的文章就介紹到這了,更多相關(guān)Java Map和List互選轉(zhuǎn)換內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評(píng)論

灵石县| 织金县| 青川县| 军事| 柯坪县| 论坛| 黄龙县| 北安市| 临汾市| 兴国县| 安徽省| 和顺县| 板桥市| 色达县| 卢氏县| 晋中市| 花莲市| 连州市| 肇源县| 陇西县| 确山县| 桂东县| 门头沟区| 塘沽区| 上林县| 兴安县| 延寿县| 巩留县| 余江县| 伽师县| 池州市| 南川市| 沁源县| 兰考县| 泗阳县| 岐山县| 扎鲁特旗| 贵港市| 边坝县| 山阴县| 建宁县|