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

这篇具有很好参考价值的文章主要介绍了Java中 Map转List 、 List转Map 简单好用。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1. Map转List

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. List转Map

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://www.toymoban.com/news/detail-569225.html

到了这里,关于Java中 Map转List 、 List转Map 简单好用的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Java集合(List、Set、Map)

    Java中的集合是用于存储和组织对象的数据结构。Java提供了许多不同的集合类,包括List、Set和Map等,以满足不同的需求。下面将介绍一些常见的Java集合类及其使用方法。 一、List List是一个有序的集合,它允许元素重复出现,并提供了索引访问元素的功能。List可以通过以下方

    2024年02月16日
    浏览(30)
  • Java对List<Map>进行合并去重

    对List 进行合并去重,首先创建一个新的 List 用于存储合并去重后的结果,遍历原始的 List ,将每个 Map 对象中的键值对放入一个 Set 中进行去重,最后将去重后的键值对重新组装成一个新的 Map 对象,并添加到新的 List 中。 完整实例代码如下: 简单示例仅供参考

    2024年02月05日
    浏览(31)
  • Java-集合框架-List,Set,Map,队列

    Java集合框架是一组用于存储和操作数据的类和接口。它提供了不同类型的集合,如List,Set,Map和队列,以满足不同的需求。 List:有序的集合,允许重复的元素。 Set:无序的集合,不允许重复的元素。 Map:键值对的集合,每个元素都包含一个键和一个值。 队列:先进先出(

    2024年02月11日
    浏览(38)
  • Java的集合类:List、Set、Map

    在 Java 中,集合类是一组有序或无序的数据元素的集合。Java 集合类可用于存储和操作各种数据类型的元素,如整数、字符串、对象等。集合类是动态的,可以在运行时根据需要调整其大小。 Java 集合类可以分为三类: List - 有序集合,允许重复元素 Set - 无序集合,不允许重

    2024年02月16日
    浏览(36)
  • Java8 - 将 List 集合转为 Map

    1. 将List转为Map:key=userId, value=name 输出: 2. 将List转为Map:key=userId, value=User对象 输出: 3. 重复的 key 处理 如果出现相同的key,那么会抛出重复key的异常,比如我们将userId为3的修改为2,则会和第二个用户冲突: 抛出异常: Collectors.toMap支持第三个参数,对重复值进行选取:

    2024年02月08日
    浏览(58)
  • Java 8中List转Map的多种方式

    首先创建两个实体类

    2024年02月11日
    浏览(20)
  • Java将一个list<T>指定key转换成Map<list>

    经常有这种,一个数据库里有多个字段,但是数据库只能返回一个list,你group分组了也没用。 然后你得到的是一个list,你想根据type分组,大概是这样 [ {\\\"name\\\":\\\"牛奶\\\",\\\"desc\\\":\\\"吃了有力气\\\",\\\"type\\\":\\\"食物\\\"}, {\\\"name\\\":\\\"猫耳朵\\\",\\\"desc\\\":\\\"富含丰富油脂\\\",\\\"type\\\":\\\"食物\\\"}, {\\\"name\\\":\\\"电脑\\\",\\\"desc\\\":\\\"可以提升

    2024年01月24日
    浏览(35)
  • Java Stream:List分组成Map或LinkedHashMap

    在Java中,使用Stream API可以轻松地对集合进行操作,包括将List转换为Map或LinkedHashMap。本篇博客将演示如何利用Java Stream实现这两种转换,同时假设List中的元素是User对象。 List转Map有两种Map格式,分别是 MapString, User 和 MapString, List ,下面我将分别展示: 转换成MapString, User我们

    2024年02月03日
    浏览(37)
  • JAVA对象、List、Map和JSON之间的相互转换

    参考文章: Java-json相关转换,JSONObject与实体类/map互转、List/List<map>和JSONArray互转、获取JSONObject中的key value、字符串String转换等 【JSON转换】String与JSONObject、JSONArray、JAVA对象和List 的相互转换

    2024年02月03日
    浏览(46)
  • Java基础六 - Collection集合List、Set、Queue,Map

    1. List - ArrayList、LinkedList、Vector ArrayList         2. LinkedList         3. Vector         4. 常见使用方法 2. Set - HashSet、LinkedHashSet、TreeSet 1. HashSet 2. LinkedHashSet 3. TreeSet 4. 常用方法 3. Map - HashMap、TreeMap、LinkedHashMap、Hashtable 1. HashMap 2. LinkedHashMap 3. TreeMap 4. Hashtable 5.

    2024年02月14日
    浏览(35)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包