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);
}