我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Java中 Map转List 、 List转Map 简单好用

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Java中 Map转List 、 List转Map 简单好用

1.1 将Map的key转换为List

    public void testMapToList(){        // 创建一个Map        Map<String, Integer> map = new HashMap<>();        map.put("key1", 1);        map.put("key2", 2);        map.put("key3", 3);        // 将Map的key转换为List        List<String> keyList = new ArrayList<>(map.keySet());        // 打印结果        System.out.println(keyList);    }

输出:

[key1, key2, key3]

1.2 将Map的value转换为List

    public void testMapToList(){        // 创建一个Map        Map<String, Integer> map = new HashMap<>();        map.put("key1", 1);        map.put("key2", 2);        map.put("key3", 3);        // 将Map的value转换为List        List<Integer> keyList = new ArrayList<>(map.values());        // 打印结果        System.out.println(keyList);    }

输出:

[1, 2, 3]

所以说这两个方法的区别就是在new ArrayList<>时选择使用map.values()还是map.keySet()


2.1 最普通的List转Map

    public void testListToMap(){        // 创建一个List        List<String> list = new ArrayList<>();        list.add("key1");        list.add("key2");        list.add("key3");        // 将List转换为Map        Map<String, Integer> map = list.stream()                .collect(Collectors.toMap(key -> key, value -> 0, (v1, v2) -> v1)); // value里默认放一个0        // 打印结果        System.out.println(map);    }

输出:

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

要特别注意里面的(v1, v2) -> v1) 必须带上。如果你的key里重复的时候没这句话会异常:
java.lang.IllegalStateException: Duplicate key 0

(v1, v2) -> v1 表示当出现重复的键时,选择保留原始的值 v1,而忽略新值 v2
如果你希望在出现重复的键时采取其他操作,例如取最大值、取最小值或者进行求和等操作,您可以在合并函数中编写相应的逻辑。例如,可以使用(v1, v2) -> Math.max(v1, v2)来选择两个值中的最大值。

2.2 List转Map同时保证顺序

假如我的list的放入顺序变了:

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

用第一个方式得到的Map是乱序的,如果想保证顺序,可以借助LinkedHashMap.

public void testListToMap(){        // 创建一个List        List<String> list = new ArrayList<>();        list.add("key3");        list.add("key2");        list.add("key1");        // 将List转换为Map        Map<String, Integer> map = list.stream()                .collect(Collectors.toMap(key -> key, value -> 0, (v1, v2) -> v1, LinkedHashMap::new)); // value里默认放一个0        // 打印结果        System.out.println(map);    }

输出:

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

2.3 List转Map(对象类型且key拼接)

假如有这个User

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

想要id拼接_拼接name作为keyage作为value,转Map。代码:

public void testListToMap2() {        // 创建一个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转换为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转Map(id作为key,每个元素作为value)

public void testListToMap2() {        // 创建一个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转换为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}}

完结撒花~

来源地址:https://blog.csdn.net/jiuweihu521/article/details/130867637

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Java中 Map转List 、 List转Map 简单好用

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Java中 Map转List 、 List转Map 简单好用

1. Map转List 1.1 将Map的key转换为List public void testMapToList(){ // 创建一个Map MapString, Integer> map = new
2023-08-30

Java 中如何将 Map 转换为 List 对象?(java map转list对象的方法是什么)

在Java编程中,经常会遇到需要将Map转换为List的情况,这在处理数据结构和数据转换时是一个常见的操作。以下是几种将JavaMap转换为List的方法:方法一:使用EntrySet和StreamAPI
Java 中如何将 Map 转换为 List 对象?(java map转list对象的方法是什么)
Java2024-12-22

Java中怎么将list转换成map

这篇文章主要介绍了Java中怎么将list转换成map的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Java中怎么将list转换成map文章都会有所收获,下面我们一起来看看吧。在java后端编程中,我们时常会有
2023-06-29

java8中list转map怎么实现

在Java 8中,可以使用Collectors.toMap()方法将List转换为Map。以下是一个简单的示例代码:假设有一个类Person:public class Person {private String name;privat
java8中list转map怎么实现
2024-03-01

Java中Json与List、Map、entity怎么互相转化

本篇内容介绍了“Java中Json与List、Map、entity怎么互相转化”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!第一步:导入依赖
2023-07-02

java map转list对象的方法是什么

Rate limit reached for gpt-3.5-turbo in organization org-68Lqb4iD2GUhNJWqRdyhiGwp on requests per day. Limit: 200 / day.
2023-10-18

Java-json相关转换,JSONObject与实体类/map互转、List/List<map>和JSONArray互转、获取JSONObject中的key value、字符串String转换等

博客背景是Java开发。json相关的转换、取值等在日常开发中经常使用,但有时候还是会忘记or遇到些奇奇怪怪的问题。以此记录,提醒自己~不定期更新~ 文章目录 1、JSONObject相关实体类和JSONObject互转Map和JS
2023-08-17

GO 中将 Map 转换为 List 的通用函数

php小编草莓为您介绍一款名为“GO 中将 Map 转换为 List 的通用函数”的实用工具。这个函数可以帮助您将键值对映射(Map)的数据结构转换为列表(List)的数据结构。通过这个通用函数,您可以方便地将复杂的数据结构转换为更简洁的形
GO 中将 Map 转换为 List 的通用函数
2024-02-13

Java中List使用stream流转成map的几种方式详解

Stream是Java8中处理集合的关键抽象概念,它可以指定你希望对集合进行的操作,可以执行非常复杂的查找、过滤和映射数据等操作,下面这篇文章主要给大家介绍了关于Java中List使用stream流转成map的几种方式,需要的朋友可以参考下
2023-05-16

List使用stream流转成map的几种方式

List使用stream流转成map的几种方式 实体例子List 转成MapList 转成MapList 转成Map>方法一:方法二: List 转成Map>List> 转成Map>List> 转成MapList> 转成Map>
2023-08-25

C++list-map链表与映射表的简单使用

本文主要介绍了C++list-map链表与映射表的简单使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
2023-05-19

如何在Java8中将List<T>转为Map<String,T>

这篇文章主要介绍了如何在Java8中将List转为Map,此处通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考价值,需要的朋友可以参考下:Java是什么Java是一门面向对象编程语言,可以编写桌面
2023-06-06

编程热搜

目录