Java8 Stream操作流10条常用方法

本文展示了如何使用Java对User类的数据进行操作,包括按城市分组、销售冠军、总金额计算、年龄过滤、最高/最低销售金额以及统计人均和城市数量等。
摘要由CSDN通过智能技术生成

1.基础数据

@Data
@AllArgsConstructor
@NoArgsConstructor
public class User {
    private String name;
    private Integer age;
    private String sex;
    private String city; //城市
    private Integer money; //业绩金额
}
//准备数据
        List<User> users = new ArrayList<>();
        users.add(new User("京爷1",21,"男","北京",1200));
        users.add(new User("京爷2",21,"男","北京",2100));
        users.add(new User("海哥1",23,"女","上海",3200));
        users.add(new User("海哥2",30,"女","上海",2600));
        users.add(new User("苏姐1",21,"男","苏州",2800));
        users.add(new User("苏姐2",21,"男","苏州",1500));

2.根据城市分组

Map<String, List<User>> collect = users.stream().collect(Collectors.groupingBy(User::getCity));
        collect.forEach((k,v)->{
            System.out.println("城市名:"+ k);
            System.out.println(v);
        });

3.列出每个城市的销售冠军

 Map<String, Optional<User>> map = users.stream().collect(
                Collectors.groupingBy(
                        User::getCity,
                        Collectors.maxBy(Comparator.comparingInt(User::getMoney))
                )
        );

4.求每个城市的销售总金额

 Map<String, Integer> map = users.stream().collect(
       Collectors.groupingBy(
       User::getCity,
       Collectors.summingInt(User::getMoney)
    )
 );

5.全国销售总金额

int sum = users.stream().mapToInt(User::getMoney).sum();
 System.out.println("全国销售总金额:"+sum);

6.过滤出年龄大于22岁的员工

 List<User> collect = users.stream().filter(s -> s.getAge()>22).collect(Collectors.toList());
 System.out.println(collect);


7. 最好与最差的员工的销售金额

Integer max = users.stream().map(User::getMoney).max(Integer::compareTo).get();
  System.out.println("业绩最好的员工销售金额:"+max);
  Integer min = users.stream().map(User::getMoney).min(Integer::compareTo).get();
 System.out.println("业绩最差的员工销售金额:"+min);

8.人均销售金额

double avg = users.stream().mapToDouble(User::getMoney).average().getAsDouble();
System.out.println("人均销售金额:" + avg );

9. 全国根据销售金额排序

users.sort(Comparator.comparing(User::getMoney).reversed());

 System.out.println(users);

10. 全国有多少销售城市

List<String> citys = users.stream().map(User::getCity).distinct().collect(Collectors.toList());
System.out.println(citys);

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值