美文网首页
java8 list转map

java8 list转map

作者: c458a5378a5a | 来源:发表于2018-12-04 11:29 被阅读0次
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

      本文链接:https://www.haomeiwen.com/subject/hndcfqtx.html