java list stream avg_Java8之list.stream的常见使用

public static void main(String[] args) {

List list = Lists.newArrayList();

list.add(new Student("测试", "男", 18));

list.add(new Student("开发", "男", 20));

list.add(new Student("运维", "女", 19));

list.add(new Student("DBA", "女", 22));

list.add(new Student("运营", "男", 24));

list.add(new Student("产品", "女", 21));

list.add(new Student("经理", "女", 25));

list.add(new Student("产品", "女", 21));

//求性别为男的学生集合

List l1 = list.stream().filter(student -> student.sex.equals("男")).collect(toList());

//map的key值true为男,false为女的集合

Map> map = list.stream().collect(partitioningBy(student -> student.getSex().equals("男")));

//求性别为男的学生总岁数

Integer sum = list.stream().filter(student -> student.sex.equals("男")).mapToInt(Student::getAge).sum();

//按性别进行分组统计人数

Map map = list.stream().collect(Collectors.groupingBy(Student::getSex, Collectors.summingInt(p -> 1)));

//判断是否有年龄大于25岁的学生

boolean check = list.stream().anyMatch(student -> student.getAge() > 25);

//获取所有学生的姓名集合

List l2 = list.stream().map(Student::getName).collect(toList());

//求所有人的平均年龄

double avg = list.stream().collect(averagingInt(Student::getAge));

//求年龄最大的学生

Student s = list.stream().reduce((student, student2) -> student.getAge() > student2.getAge() ? student:student2).get();

Student stu = list.stream().collect(maxBy(Comparator.comparing(Student::getAge))).get();

//按照年龄从小到大排序

List l3 = list.stream().sorted((s1, s2) -> s1.getAge().compareTo(s2.getAge())).collect(toList());

//求年龄最小的两个学生

List l4 = l3.stream().limit(2).collect(toList());

//获取所有的名字,组成一条语句

String str = list.stream().map(Student::getName).collect(Collectors.joining(",", "[", "]"));

//获取年龄的最大值、最小值、平均值、求和等等

IntSummaryStatistics intSummaryStatistics = list.stream().mapToInt(Student::getAge).summaryStatistics();

System.out.println(intSummaryStatistics.getMax());

System.out.println(intSummaryStatistics.getCount());

}

@Data

@AllArgsConstructor

static class Student{

String name;

String sex;

Integer age;

}

最后给大家说一个并行化流操作parallelStream(),跟stream()的用法一样。使用parallelStream就能立即获得一个拥有并行能力的流,利用好并行化非常重要。不过并不是所有的流计算都要使用并行化流操作,只有当计算机是多核并且集合数据量较大(超过一万)的时候使用并行化流操作可以提高效率。

影响性能的五要素:数据大小、源数据结构、值是否装箱、可用的CPU数量以及处理每个元素所花的时间。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值