0
点赞
收藏
分享

微信扫一扫

Stream流及Lambda表达式

Python芸芸 2022-03-11 阅读 71

Stream流及Lambda表达式

先创建一些测试用的数据,添加一个实体类bean

本文用OrderDetail 创建一个实体类 属性分别是productId和 productQuantity

       List<OrderDetail> orderDetailList = new ArrayList<OrderDetail>();
        OrderDetail orderDetail = new OrderDetail();
        orderDetail.setProductId("a");
        orderDetail.setProductQuantity("张三");
        OrderDetail orderDetail2 = new OrderDetail();
        orderDetail2.setProductId("a1");
        orderDetail2.setProductQuantity("李四");
        OrderDetail orderDetail3 = new OrderDetail();
        orderDetail3.setProductId("a2");
        orderDetail3.setProductQuantity("赵六");
        orderDetailList.add(orderDetail);
        orderDetailList.add(orderDetail2);
        orderDetailList.add(orderDetail3);

把list里每一个对象的ProductQuantity取出来放到新的list中

        //.map 修改stream流中的数据类型
        //.collect 把当前流转换成一个集合; 例Collectors.toList() 把当前list集合转换成list集合
        //Collectors.toMap  吧list集合转换成map集合
  List<String> productIdList = orderDetailList.stream()
                .map(OrderDetail::getProductQuantity)
                .collect(Collectors.toList());
                System.out.println(productIdList);
   //输出结果  [张三, 李四, 赵六]

用stream遍历list集合中的所有数据

 orderDetailList.stream().forEach(orderDetail5 -> {
            System.out.println(orderDetail5);
        });
        //输出结果
 /*OrderDetail{productId='a', productQuantity='张三'}
OrderDetail{productId='a1', productQuantity='李四'}
OrderDetail{productId='a2', productQuantity='赵六'}*/

以上代码等同于

for (OrderDetail orderDetail5 : orderDetailList) {
            System.out.println(orderDetail5);
        }
        

过滤集合中需要的元素

List<OrderDetail> filterList = orderDetailList.stream().filter(filter -> {
            return filter.getProductQuantity().equals("张三");
        }).collect(Collectors.toList())
        //输出结果 [OrderDetail{productId='a', productQuantity='张三'}]

将list转换成map集合

Map<String, String> collect = orderDetailList.stream().collect(Collectors.toMap(OrderDetail::getProductId, OrderDetail::getProductQuantity));
//输出结果:{a1=李四, a2=赵六, a=张三}

Lambda表达式的写法

Map<String, String> collect1 = orderDetailList.stream().collect(Collectors.toMap(a -> a.getProductQuantity(), b -> b.getProductId()));
//输出结果 :{李四=a1, 张三=a, 赵六=a2}
举报

相关推荐

0 条评论