观看记录
  • 我的观影记录
登录
测试首页list转map的三种方法

list转map的三种方法

List代表有序调集,有序可反复;

Map调集存储键值对;

工具/原料

  • 电脑
  • myeclipse 或者intellij IDEA

第一种:利用for轮回将list调集转map

  1. 1

    将一个实体类的list调集转为map

    学生实体类:

    package test;


    public class Student {

    private Long id;

        private String age;


        public Long getId() {

            return id;

        }


        public void setId(Long id) {

            this.id = id;

        }


        public String getAge() {

            return age;

        }


        public void setAge(String age) {

            this.age = age;

        }


        @Override

        public String toString() {

            return"User{" +

                   "id=" + id +

                   ", age='" + age + '\'' +

                    '}';

        }


    }

  2. 2

    转换类编写。

    import java.util.ArrayList;

    import java.util.HashMap;

    import java.util.List;

    import java.util.Map;


    public class ListToMap {

        public static void main(String[] args) {

            List<Student> StudentList = new ArrayList<Student>();

            Student Student1 = new Student();

            Student1.setId(1L);

            Student1.setAge("12");


            Student Student2 = new Student();

            Student2.setId(2L);

            Student2.setAge("13");


            StudentList.add(Student1);

            StudentList.add(Student2);


            Map<Long, Student> maps = new HashMap<Long, Student>();

            for (Student Student : StudentList) {

            //将属性中的独一标识作为key

                maps.put(Student.getId(), Student);

            }


            System.out.println(maps);


        }

    }

  3. 3

    若是实体类中没有独一的标识,可以利用数组下标来作为key

    for (int i = 0; i < StudentList.size(); i++) {

    map.put("s"+i, StudentList.get(i));

    }

第二种:利用guava将list调集转map

  1. 1

    代码如下所示:

    import com.google.common.base.Function;

    import com.google.common.collect.Maps;


    import java.util.ArrayList;

    import java.util.List;

    import java.util.Map;


    public class ListToMap {

    public static void main(String[] args) {

    List<Student> StudentList = new ArrayList<Student>();

    Student Student1 = new Student();

    Student1.setId(1L);

    Student1.setAge("12");


    Student Student2 = new Student();

    Student2.setId(2L);

    Student2.setAge("13");


    StudentList.add(Student1);

    StudentList.add(Student2);


    Map<Long, Student> maps = Maps.uniqueIndex(StudentList,

    new Function<Student, Long>() {

    @Override

    public Long apply(Student student) {

    return student.getId();

    }

    });


    System.out.println(maps);


    }

    }

  2. 2

    测试成果如下所示:

第三种:利用JDK1.8 将list调集转map

  1. 1

    将一个对象作为value放入map中

    import java.util.ArrayList;

    import java.util.List;

    import java.util.Map;

    import java.util.function.Function;

    import java.util.stream.Collectors;


    public class ListToMap {

    public static void main(String[] args) {

            List<Student> StudentList = new ArrayList<Student>();

            Student Student1 = new Student();

            Student1.setId(1L);

            Student1.setAge("12");


            Student Student2 = new Student();

            Student2.setId(2L);

            Student2.setAge("13");


            Student Student3 = new Student();

            Student3.setId(2L);

            Student3.setAge("14");


            StudentList.add(Student1);

            StudentList.add(Student2);

            StudentList.add(Student3);



            /**

             * List -> Map

             * 需要注重的是:

             * toMap 若是调集对象有反复的key,会报错Duplicate key ....

             *  apple1,apple12的id都为1。

             *  可以用 (k1,k2)->k1 来设置,若是有反复的key,则保留key1,舍弃key2

             *  或者可以用 (k1,k2)->k2 来设置,若是有反复的key,则保留key2,舍弃key1

             */

            Map<Long, Student> maps = StudentList.stream().collect(Collectors.toMap(Student::getId,Function.identity(), (v1,v2)->v1));


            System.out.println(maps);


        }

    }

  2. 2

    将一个对象的属性作为value


    import java.util.ArrayList;

    import java.util.List;

    import java.util.Map;

    import java.util.function.Function;

    import java.util.stream.Collectors;


    public class ListToMap {

    public static void main(String[] args) {

            List<Student> StudentList = new ArrayList<Student>();

            Student Student1 = new Student();

            Student1.setId(1L);

            Student1.setAge("12");


            Student Student2 = new Student();

            Student2.setId(2L);

            Student2.setAge("13");


            Student Student3 = new Student();

            Student3.setId(2L);

            Student3.setAge("14");


            StudentList.add(Student1);

            StudentList.add(Student2);

            StudentList.add(Student3);


            /**

             * List -> Map

             * 需要注重的是:

             * toMap 若是调集对象有反复的key,会报错Duplicate key ....

             *  apple1,apple12的id都为1。

             *  可以用 (k1,k2)->k1 来设置,若是有反复的key,则保留key1,舍弃key2 或者可以用 (k1,k2)->k2 来设置,若是有反复的key,则保留key2,舍弃key1

             */

            Map<Long, String> maps = StudentList.stream().collect(Collectors.toMap(Student::getId,Student::getAge, (v1,v2)->v1));

            System.out.println(maps);

        }

    }

注重事项

  • jdk1.8
  • 若有更好的体例和弥补请在经验下提出!

“list转map的三种方法”关联的文章

  • 如何关闭皮皮搞笑精彩内容消息通知

    皮皮搞笑是一款手机搞笑社区App,让用户笑到没心没肺,又忍不住感动流泪的温暖家园,那么如何关闭皮皮搞笑精彩内容消息通知以满足不同用户的需求呢?

    24分钟前0阅读

    如何关闭皮皮搞笑精彩内容消息通知
  • win7系统找不到宽带连接怎么办

    现如今很多用户都喜欢使用win7系统,而在使用win7系统的过程中做的最多的就是上网了。Win7系统上网离不开宽带连接,如果win7宽带连接找不到了,应该怎么办呢?下面就让小编为大家带来win7系统找不到宽带连接解决方法

    24分钟前0阅读

    win7系统找不到宽带连接怎么办
  • 新版QQ音乐怎么关闭底部的直播导航

    新版QQ音乐怎么关闭底部的直播导航?下面请大家随小编一起来看看操作的方法吧。

    24分钟前0阅读

    新版QQ音乐怎么关闭底部的直播导航
  • 怎样查询高速实时路况?

    要出行怎么查询高速实时路况?我们用地图就可以了,在地图上就可以看到实际的路况的,下面详细来看下。

    24分钟前0阅读

  • 六芒星手势密码教程

    24分钟前0阅读

    六芒星手势密码教程
  • 教师讲课过程评价标准

    教师是太阳底下最光辉的职业,但是成为教师之路也是要经历重重考验的,下面给大家说说教师讲课过程评价标准

    24分钟前0阅读

  • 酚醛铝箔夹芯板

    酚醛铝箔夹芯板是由酚醛泡沫与两层亚光铝箔经过特殊工艺复合而成。外膜材料为经过高温固化的高分子膜,可有效的防止紫外线及气体腐蚀,并与铝箔结合牢固,又能与酚醛泡沫形成聚合物,从而保证象圆酚醛铝箔夹芯板的质量稳定。

    24分钟前0阅读

  • Xperia XZ2 Premium配置如何

    Xperia XZ2 Premium是索尼在4月16日悄悄发布的新机,而且没进行预热,下面来简单了解一下配置。

    24分钟前0阅读

  • PLSQL破解,无需注册码和破解工具

    PL/SQL Developer过期了,又没有注册码,又不想花钱买,而且事情又非常急,这时候怎么办?不要着急,请随小编一起解决这种情况吧。

    24分钟前0阅读

  • Win11按capslock切换不了大小写怎么解决

    有朋友不知道在哪里设置,下面小编就给大家分享详细的设置方法,有需要帮助的朋友可以参考下这篇经验,希望能对大家有所帮助。

    1小时前0阅读

    Win11按capslock切换不了大小写怎么解决
切换深色外观
留言
视频编辑修改
回到顶部
首页
手机数码
医疗健康
金融管理
社交情感
无名