将List转为Map并key去重

Posted 爱叨叨的程序狗

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了将List转为Map并key去重相关的知识,希望对你有一定的参考价值。

需求:将查询出的List转换为Map,且使用List中的某个字段为主键去重。

eg:查询出的学生list,将学生根据性别为key,Name为value转为map,由于性别是只有男/女,且map的key不可以重复,哪么我们需要使用Group By对key进行去重。

        Map<Integer, List<String>> collect = studentList.stream()
                .collect(Collectors.groupingBy(Student::getSex, Collectors.mapping(Student::getName, Collectors.toList())));
@Test
public void test7() {
    List<Student> studentList = new ArrayList<>();
    studentList.add(new Student("张三",1));
    studentList.add(new Student("李四",2));
    studentList.add(new Student("王五",1));
    studentList.add(new Student("小六",1));
    studentList.add(new Student("张三S",2));
    Map<Integer, List<String>> collect = studentList.stream()
            .collect(Collectors.groupingBy(Student::getSex, Collectors.mapping(Student::getName, Collectors.toList())));
}

class Student {
    private String name;
    private Integer sex;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Integer getSex() {
        return sex;
    }

    public void setSex(Integer sex) {
        this.sex = sex;
    }

    public Student(String name, Integer sex) {
        this.name = name;
        this.sex = sex;
    }
}

在这里插入图片描述

以上是关于将List转为Map并key去重的主要内容,如果未能解决你的问题,请参考以下文章

java map去重

使用java8将list转为map(转)

使用java8将list转为map

List列表中根据某一个字段,进行去重

大数据学习之十——MapReduce代码实例:数据去重和数据排序

java中list强转为map类型