lambda表达式处理集合的一些方法小计,总有一款适合你

    @Test
    public void test034(){
        List<Car> all=new ArrayList<Car>();
        all.add(new Car("nissan",15,15.5));
        all.add(new Car("nissan",9,13.0));
        all.add(new Car("honda",20,12.8));
        all.add(new Car("pansonic",25,2.8));
        all.add(new Car("benz",100,50.8));
        all.add(new Car("BMW",85,60.5));
        //多字段操作
        all.stream().map(car->{
            System.out.print("车名:"+car.getPname()+" 车总价(万元):");
            return car.getAmouter()*car.getPrice();
        }).forEachOrdered(System.out::println);
        System.out.println("------------------------------");

        //多字段操作,并求和
        double result =all.stream().map(car->{
            return car.getAmouter()*car.getPrice();
        }).reduce((sum,x)->sum+x).get();
        System.out.println("购车总金额:"+result);
        System.out.println("------------------------------");

        //单字段求和,处理double类型
        double sum = all.stream()
                .mapToInt(p -> p.getAmouter())
                .sum();
        System.out.println("购车总数量double:"+sum);
        System.out.println("------------------------------");

        //处理BigDecimal的使用,方法一
        BigDecimal amounts = all
                .stream()
                .map(item -> new BigDecimal(item.getAmouter()))
                .reduce(BigDecimal.ZERO, BigDecimal::add);
        amounts = amounts.setScale(1, BigDecimal.ROUND_UP);
        System.out.println("购车总数量BigDecimal:"+amounts);

        //统计操作,summaryStatistics
        DoubleSummaryStatistics result2=all.stream().mapToDouble(myCar->{
            return myCar.getAmouter()*myCar.getPrice();
        }).summaryStatistics();
        System.out.println("result2中的内容:"+result2);
        System.out.println("------------------------------");
        System.out.println("统计量getCount: "+result2.getCount());
        System.out.println("最大值getMax: "+result2.getMax());
        System.out.println("最小值getMin: "+result2.getMin());
        System.out.println("总和getSum: "+result2.getSum());
        System.out.println("平均值getAverage: "+result2.getAverage());

        //allMatch
        System.out.println("------------------------------");
        boolean isAdult = all.stream().allMatch(car -> car.getPrice() >= 2);
        System.out.println("是否全部满足条件:"+isAdult);

        //anyMatch
        System.out.println("------------------------------");
        boolean hasBMW = all.stream().anyMatch(car -> "BMW".equals(car.getPname()));
        System.out.println("是否任一满足条件:"+hasBMW);

        //noneMatch
        System.out.println("------------------------------");
        boolean noneBMW = all.stream().noneMatch(car -> "BMW2".equals(car.getPname()));
        System.out.println("是否没有满足条件:"+noneBMW);

        //findFirst
        System.out.println("------------------------------");
        Optional<Car> optCar = all.stream().filter(car -> "nissan".equals(car.getPname())).findFirst();
        System.out.println("查询第一台Nissan:"+optCar.get());

        //findAny
        System.out.println("------------------------------");
        Optional<Car> anyCar = all.stream().filter(car -> "nissan".equals(car.getPname())).findAny();
        System.out.println("查询任意一台Nissan:"+anyCar.toString());

        //maxBy
        System.out.println("------------------------------");
        Optional<Car> upperPrice = all.stream().collect(Collectors.maxBy(Comparator.comparing(Car::getPrice)));
        List<Car> presentCar=new ArrayList();
        upperPrice.ifPresent(presentCar::add);
        System.out.println("汽车最高单价:"+presentCar.get(0).getPrice());

        //summingInt
        System.out.println("------------------------------");
        int totalCount = all.stream().collect(Collectors.summingInt(Car::getAmouter));
        System.out.println("购买汽车总数量:"+totalCount);

        //拼接字符串,名字
        System.out.println("------------------------------");
        String names = all.stream().map(Car::getPname).collect(Collectors.joining(", "));
        System.out.println("名字拼接成字符串:"+names);
    }

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值