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 + "]");
}
}
java8 list转map
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- list 分组成 map list直接转成map并且key去重 需要注意的是:toMap 如果集合对象有重复的ke...
- 转:Java8数据流 分享:Java8集合排序 Java8java8--List转为Map、分组、统计等操作
- 一、背景 在各种系统需要加签的时一般都会把参与签名的数据按get请求参数拼接起来并且要求有序,这个方法会比较方便 ...