package com.rongzhijia.jiedianqian.basic.promotion;
import com.google.common.collect.Lists;
import java.util.*;
import java.util.stream.Collectors;
/**
* @author wangys
* @create 2018-11-12 14:37
**/
public class MapTest {
static class UserOrderCenterDTO {
private Integer productId;
private Integer orderId;
public Integer getProductId() {
return productId;
}
public void setProductId(Integer productId) {
this.productId = productId;
}
public Integer getOrderId() {
return orderId;
}
public void setOrderId(Integer orderId) {
this.orderId = orderId;
}
public UserOrderCenterDTO() {
}
public UserOrderCenterDTO(Integer productId, Integer orderId) {
this.productId = productId;
this.orderId = orderId;
}
}
public static void main(String[] args) {
UserOrderCenterDTO userOrder = new UserOrderCenterDTO();
userOrder.setProductId(1);
userOrder.setOrderId(11);
UserOrderCenterDTO userOrder1 = new UserOrderCenterDTO();
userOrder1.setProductId(2);
userOrder1.setOrderId(22);
UserOrderCenterDTO userOrder2 = new UserOrderCenterDTO();
userOrder2.setProductId(1);
userOrder2.setOrderId(22);
UserOrderCenterDTO userOrder3 = new UserOrderCenterDTO();
userOrder3.setProductId(1);
userOrder3.setOrderId(33);
ArrayList<UserOrderCenterDTO> userOrderlist = Lists.newArrayList(userOrder,userOrder1,userOrder2,userOrder3);
Map<Integer, UserOrderCenterDTO> userOrderlistMap = new HashMap<>();
for (UserOrderCenterDTO userOrderCenterDTO : userOrderlist) {
UserOrderCenterDTO userOrderCenterDTO1 = userOrderlistMap.get(userOrderCenterDTO.getProductId());
if (userOrderCenterDTO1 == null || userOrderCenterDTO1.getOrderId().compareTo(userOrderCenterDTO.getOrderId()) < 0) {
userOrderlistMap.put(userOrderCenterDTO.getProductId(), userOrderCenterDTO);
}
}
//处理多个相同的key
//Map<Integer, List<UserOrderCenterDTO>> collect = userOrderlist.stream().collect(Collectors.groupingBy(UserOrderCenterDTO::getProductId));
Map<Integer, UserOrderCenterDTO> collect1 = userOrderlist.stream()
//.sorted(Comparator.comparing(UserOrderCenterDTO::getOrderDate).reversed())
.collect(Collectors.toMap(UserOrderCenterDTO::getProductId, a -> a,(v1,v2)->{
return v1.getOrderId().compareTo(v2.getOrderId()) < 0 ? v2 :v1;
}));
//处理多个相同的key
Map<Integer, UserOrderCenterDTO> collect2 = userOrderlist.stream()
.sorted(Comparator.comparing(UserOrderCenterDTO::getOrderId).reversed())
.collect(Collectors.toMap(UserOrderCenterDTO::getProductId, a -> a,(v1,v2)->v1));
//分组
Map<Integer, List<UserOrderCenterDTO>> collect = userOrderlist.stream().collect(Collectors.groupingBy(UserOrderCenterDTO::getProductId));
int sum = userOrderlist.stream().mapToInt(UserOrderCenterDTO::getOrderId).sum();
System.out.println("args = [" + userOrderlistMap + "]");
System.out.println("args = [" + collect1 + "]");
}
}
网友评论