list转map

 

 

 

package com.sankuai.mall.was.service;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.function.Function;
import java.util.stream.Collectors;

/**
 * Created by liuzunli on 2018/3/16.
 */
public class Test {

    public static void main(String[] args) {
        List<TestA> listA = new ArrayList<>();
        for(int i=0;i<10;i++){
            TestB b = new TestB(i,"第"+i+"B");
            listA.add(new TestA("第"+i+"B",b));
        }
        System.out.println(listA);
        Map<Integer, TestA> collect = listA.stream().collect(Collectors.toMap(b -> {return b.getB().getId();}, b -> b));
        System.out.println(collect);
    }


}
class TestA{
    String testA;
    TestB b;

    public String getTestA() {
        return testA;
    }

    public void setTestA(String testA) {
        this.testA = testA;
    }

    public TestB getB() {
        return b;
    }

    public void setB(TestB b) {
        this.b = b;
    }

    public TestA(String testA, TestB b) {
        this.testA = testA;
        this.b = b;
    }

    @Override
    public String toString() {
        return "TestA{" +
                "testA='" + testA + '\'' +
                ", b=" + b +
                '}';
    }
}

class TestB{
    int id;
    String testB;

    public int getId() {
        return id;
    }

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

    public String getTestB() {
        return testB;
    }

    public void setTestB(String testB) {
        this.testB = testB;
    }

    public TestB(int id, String testB) {
        this.id = id;
        this.testB = testB;
    }

    @Override
    public String toString() {
        return "TestB{" +
                "id=" + id +
                ", testB='" + testB + '\'' +
                '}';
    }
}

 

    public static void main(String[] args) {
        List<MachiningPO> machiningPOS = new ArrayList<>();
        MachiningPO machiningPO1 = new MachiningPO();
        machiningPO1.setId(1L);
        machiningPO1.setQuantity(new BigDecimal("1"));
        machiningPOS.add(machiningPO1);
        MachiningPO machiningPO2 = new MachiningPO();
        machiningPO2.setId(1L);
        machiningPO2.setQuantity(new BigDecimal("2"));
        machiningPOS.add(machiningPO2);
        MachiningPO machiningPO3 = new MachiningPO();
        machiningPO3.setId(3L);
        machiningPO3.setQuantity(new BigDecimal("3"));
        machiningPOS.add(machiningPO3);

        Map<Long, BigDecimal> quantityMap = machiningPOS.stream().collect(Collectors.groupingBy(MachiningPO::getId, Collectors.collectingAndThen(Collectors.toList(), machiningPOList -> {
            return machiningPOList.stream().map(MachiningPO::getQuantity).reduce(BigDecimal.ZERO, BigDecimal::add);
        })));
        System.out.println(quantityMap);
    }

 

posted @ 2018-03-16 17:37  刘尊礼  阅读(115)  评论(0)    收藏  举报