把list放进map中

有个这样的List<PerformanceRanking> list PerformanceRanking是实体类,从数据库查询出来的,相当于一个map

把list放进map中 Map<String,List<PerformanceRanking>> 我想把这个map按照实体类中的三个字段作为String。该如何实现呢

 

    class A {
        private String id;
        private String address;
        private int age;
        private boolean sex;

        public String getId() {
            return id;
        }

        public void setId(String id) {
            this.id = id;
        }

        public String getAddress() {
            return address;
        }

        public void setAddress(String address) {
            this.address = address;
        }

        public int getAge() {
            return age;
        }

        public void setAge(int age) {
            this.age = age;
        }

        public boolean isSex() {
            return sex;
        }

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

        public A(String id, String address, int age, boolean sex) {
            this.id = id;
            this.address = address;
            this.age = age;
            this.sex = sex;
        }
    }
    @Test
    public void testA() {
        List<A> aList = new ArrayList<>();
        A a1 = new A("1", "地址1", 10, false);
        aList.add(a1);
        A a2 = new A("1", "地址1", 10, true);
        aList.add(a2);
        A a3 = new A("2", "地址2", 12, false);
        aList.add(a3);
        A a4 = new A("2", "地址2", 12, true);
        aList.add(a4);

        Map<String, List<A>> map = aList.stream().collect(Collectors.groupingBy(a -> a.id+"_"+a.address+"_"+a.age, Collectors.toList()));
        System.out.println(map);
    }

套娃啊,Map<实体类的字段,List<Map<String,PerformanceRanking>>>>

看你的描述应该没有什么难度呀,就像上面说的那样套娃就行了。是不是描述没描述清楚呢

Map<字段,List<Map<String,PerformanceRanking>>>

如果你是放一张表的数据是可以这样套娃的,每一给MAP就是一个字段中的列,key是字段名,value是字段的值,然后每一个List<Map<String,PerformanceRanking>>>就是表中的一行数据,list有多少给下标就表示有多少行数据

list 能这样??

List<String,PerformanceRanking> 

这是Debug执行的值

 

key你可以随意定义

这是没有简写过的代码

 

如果你能确定list中不是重复的就用

aList.stream().Map(a -> a.id+"_"+a.address+"_"+a.age).collect(Collectors.toList());

否则就要進行分組
aList.stream().collect(Collectors.groupingBy(a -> a.id+"_"+a.address+"_"+a.age, Collectors.toList()));