JAVA stream常用方法

对象转Map
Map<Long, OrderItem> orderItemMap = list.stream().collect(Collectors.toMap(OrderItem::getId, i -> i));

对象属性值统计
list.stream().map(OrderItemResponse::getGoodsId).distinct().count();

//过滤-匹配第一个
OrderPayment dbPayment = list.stream().filter(p -> "已支付".equals(p.getStatus()))
                    .findFirst().get();


//集合
List<Long> orderItemIds = list.stream().map(OrderItemResponse::getOrderItemId).distinct().collect(Collectors.toList());


//指定分组-value为对象集合
list.stream().collect(Collectors.groupingBy(OrderItem::getOrderId));

//指定分组-value为对象集合
private Map<Long, List<OrderItemResponse>> getPurchaseOrderItemByGoodsIdMap(List<OrderItemResponse> list) {
        return list.stream()
                .collect(Collectors.toMap(OrderItemResponse::getGoodsId, Lists::newArrayList,
                        (List<OrderItemResponse> oldList, List<OrderItemResponse> newList) -> {
                            oldList.addAll(newList);
                            return oldList;
                        }));
    }
//指定分组-value为某个字段的集合

第一种: items.stream().collect(Collectors.groupingBy(OrderItem::getOrderId));

第二种:
private Map<Long, List<Long>> getMap(List<OrderItemResponse> list) {
        return list.stream()
                .collect(Collectors.toMap(OrderItemResponse::getOrderItemId, i -> Lists.newArrayList(i.getStockDcId()),
                        (List<Long> oldList, List<Long> newList) -> {
                            oldList.addAll(newList);
                            return oldList;
                        }));
    }
    
//排序
list.stream().sorted(Comparator.comparing(LotteryItemResponse::getQuantity).reversed()).findFirst()

//指定排序
        List<Integer> regulationOrder = Lists.newArrayList(1, 2, 4, 3);
        list.sort((o1, o2) -> {
            int io1 = regulationOrder.indexOf(o1.getType());
            int io2 = regulationOrder.indexOf(o2.getType());
            return io1 - io2;
        });

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值