如何使用Stream流将List转换为Map

简介: 如何使用Stream流将List转换为Map

如何使用Stream流将List转换为Map

以下程序用到的基础代码:

final static List<Student> studentList = new ArrayList<Student>();

/**
 * 初始化集合数据
 */
static {
   
   Student stu1 = new Student("0001", "张三", 12, "江苏南京");
   Student stu2 = new Student("0002", "李四", 14, "江苏无锡");
   Student stu3 = new Student("0003", "王二", 11, "浙江台州");
   Student stu4 = new Student("0004", "李五", 12, "浙江温州");


   studentList.add(stu1);
   studentList.add(stu2);
   studentList.add(stu3);
   studentList.add(stu4);
}

List<Object> 转化为Map

Map<String, Student> map = studentList.stream().collect(Collectors.toMap(Student::getId, each -> each, (value1, value2) -> value1));

List<Object>转化为Map

Map<String, String> map = studentList.stream().collect(Collectors.toMap(Student::getName, Student::getAddress, (value1, value2) -> value1));

List<Object>转化为Map>`

Map<Integer, List<Student>> map = studentList.stream().collect(Collectors.groupingBy(Student::getAge));

List<Object>转化为Map>`

Map<String, List<String>> map3 = studentList.stream().collect(Collectors.toMap(Student::getId, each -> Collections.singletonList(each.getName()), (value1, value2) -> {
   
            List<String> union = new ArrayList<>(value1);
            union.addAll(value2);
            return union;
}));

List> 转化为Map

final static List<Map<String, Object>> mapStudentList = new ArrayList<>();
public static void main(String[] args) {
   
        Map<String, Object> map4 = mapStudentList.stream().collect(Collectors.toMap(each -> Objects.toString(each.get("id"), ""), each -> each.get("student"), (key1, key2) -> key1));
    }


    /**
     * 初始化集合数据
     */
    static {
   
        Student stu1 = new Student("0001", "张三", 12, "江苏南京");
        Student stu2 = new Student("0002", "李四", 14, "江苏无锡");
        Student stu3 = new Student("0003", "王二", 11, "浙江台州");
        Student stu4 = new Student("0004", "李五", 12, "浙江温州");


        Map<String, Object> map1 = new HashMap<>();
        map1.put("id", "0001");
        map1.put("student", stu1);

        Map<String, Object> map2 = new HashMap<>();
        map2.put("id", "0002");
        map2.put("student", stu2);

        Map<String, Object> map3 = new HashMap<>();
        map3.put("id", "0003");
        map3.put("student", stu3);

        Map<String, Object> map4 = new HashMap<>();
        map4.put("id", "0004");
        map4.put("student", stu4);

        mapStudentList.add(map1);
        mapStudentList.add(map2);
        mapStudentList.add(map3);
        mapStudentList.add(map4);
    }

List> 转化为Map>

    final static List<Map<String, String>> listMapList = new ArrayList<>();


    public static void main(String[] args) {
   
        Map<String, Map<String, String>> map5 = listMapList.stream().collect(Collectors.toMap(each -> each.get("id"), each -> each, (key1, key2) -> key1));
        System.out.println("map5 = " + map5);

    }

    /**
     * 初始化集合数据
     */
    static {
   
        Map<String, String> map1 = new HashMap<>();
        map1.put("id", "0001");
        map1.put("name", "张三");
        map1.put("age", "12");
        map1.put("address", "江苏南京");

        Map<String, String> map2 = new HashMap<>();
        map2.put("id", "0002");
        map2.put("name", "李四");
        map2.put("age", "14");
        map2.put("address", "江苏无锡");


        Map<String, String> map3 = new HashMap<>();
        map3.put("id", "0003");
        map3.put("name", "王二");
        map3.put("age", "11");
        map3.put("address", "浙江台州");

        Map<String, String> map4 = new HashMap<>();
        map4.put("id", "0004");
        map4.put("name", "李五");
        map4.put("age", "12");
        map4.put("address", "浙江温州");


        listMapList.add(map1);
        listMapList.add(map2);
        listMapList.add(map3);
        listMapList.add(map4);
    }

List> 转化为Map

     final static List<Map<String, String>> listmapstringlist = new ArrayList<>();

     public static void main(String[] args) {
   
     Map<String, String> map6 = listmapstringlist.stream().collect(Collectors.toMap(each -> each.get("id"), each -> each.get("name"), (key1, key2) -> key1));

    }

    /**
     * 初始化集合数据
     */
    static {
   
        Map<String, String> map1 = new HashMap<>();
        map1.put("id", "0001");
        map1.put("name", "张三");
        map1.put("age", "12");
        map1.put("address", "江苏南京");

        Map<String, String> map2 = new HashMap<>();
        map2.put("id", "0002");
        map2.put("name", "李四");
        map2.put("age", "14");
        map2.put("address", "江苏无锡");


        Map<String, String> map3 = new HashMap<>();
        map3.put("id", "0003");
        map3.put("name", "王二");
        map3.put("age", "11");
        map3.put("address", "浙江台州");

        Map<String, String> map4 = new HashMap<>();
        map4.put("id", "0004");
        map4.put("name", "李五");
        map4.put("age", "12");
        map4.put("address", "浙江温州");
        listmapstringlist.add(map1);
        listmapstringlist.add(map2);
        listmapstringlist.add(map3);
        listmapstringlist.add(map4);
    }
相关文章
|
3月前
|
Dart
Dart之集合详解(List、Set、Map)
Dart之集合详解(List、Set、Map)
46 1
|
3月前
|
消息中间件 负载均衡 NoSQL
Redis系列学习文章分享---第七篇(Redis快速入门之消息队列--List实现消息队列 Pubsub实现消息队列 stream的单消费模式 stream的消费者组模式 基于stream消息队列)
Redis系列学习文章分享---第七篇(Redis快速入门之消息队列--List实现消息队列 Pubsub实现消息队列 stream的单消费模式 stream的消费者组模式 基于stream消息队列)
42 0
|
17天前
|
存储 安全 Java
java集合框架复习----(4)Map、List、set
这篇文章是Java集合框架的复习总结,重点介绍了Map集合的特点和HashMap的使用,以及Collections工具类的使用示例,同时回顾了List、Set和Map集合的概念和特点,以及Collection工具类的作用。
java集合框架复习----(4)Map、List、set
|
4天前
|
存储 算法 Java
Stream很好,Map很酷,但答应我别滥用toMap()!
【8月更文挑战第27天】在Java的世界里,Stream API和Map数据结构无疑是现代编程中的两大瑰宝。Stream API以其函数式编程的优雅和强大的数据处理能力,让集合操作变得简洁而高效;而Map则以其键值对的存储方式,为数据的快速检索和更新提供了便利。然而,当这两者相遇,特别是当我们试图通过Stream的toMap()方法将流中的元素转换为Map时,一些潜在的问题和陷阱便悄然浮现。今天,我们就来深入探讨一下这个话题,并探讨如何更加安全、高效地利用这些强大的工具。
15 0
|
9天前
|
存储 Java 索引
|
3月前
|
存储 安全 Java
Java集合详解:Set, Map, Vector, List的对比与联系
Java集合框架核心包括List、Set、Map和Vector。List允许重复元素,如ArrayList(适合读取)和LinkedList(适合插入删除)。Set不允许重复,有HashSet(无序)和TreeSet(排序)。Map存储键值对,HashMap(无序)和TreeMap(排序)。Vector是线程安全的ArrayList替代品,但在多线程环境下使用。选择集合类型应根据应用场景,如有序、无序、键值对需求及线程安全考虑。
|
3月前
|
存储 安全 Java
Java 集合(List、Set、Map 等)相关问答归纳再整理
HashMap 中使用键对象来计算 hashcode 值 HashSet 使用成员对象来计算 hashcode 值,对于两个对象来说hashcode 可能相同,所以 equals() 方法用来判断对象的相等性,如果两个对象不同的话,那么返回 false。 HashMap 比较快,因为是使用唯一的键来获取对象,HashSet 较 HashMap 来说比较慢。 4.1.3 HashMap 与 TreeMap
22 2
|
3月前
|
存储 安全 程序员
老程序员分享:List、Map、Set之间的联系与区别:
老程序员分享:List、Map、Set之间的联系与区别:
|
3月前
|
Java
java中Stream流中的forEach、filter、map、count、limit、skip、concat
java中Stream流中的forEach、filter、map、count、limit、skip、concat
57 0
|
3月前
|
Java
java操作list使用Stream
java操作list使用Stream
19 0
下一篇
云函数