Java 8 新特性之:Stream

在以往的开发中,如果要对一个集合进行一些个操作,我们就要对数据进行for循环遍历,如果需求复杂些,往往要进行多次遍历,性能很低,写代码也很头疼,现在有了Stream的引入,这一切都变得很简单。我们可以像写SQL查询数据库一样操作集合,排序、分组、聚合、筛选等等应有尽有
Stream把我们要操作的数据抽象为流,数据流在管道中流动,在流动的过程中我们可以进行一些操作,下面来学习下:
这是学习过程中我们要用到的数据上图是学习过程中我们要用到的数据:
在这里插入图片描述

①生成流( 相当于写了一个select * from tb_****的SQL):

//创建流的两种方式:
Stream<Student> stream = list.stream();//创建串行流
Stream<Student> studentStream = list.parallelStream();//创建并行流

②筛选数据(相当于SQL中的where语句)

在这里插入图片描述

List<Student> collect = stream.filter(student -> student.getSnation().equals("壮族")).collect(Collectors.toList());
  • Stream的filter方法就是对数据的过滤操作,指定我们只要这些学生中民族为壮族的学生信息
  • Steam的collect方法就是将经过处理的数据流再次转换为集合(本例中我用的是ArrayList,其他的集合也一样)

③排序(相当于SQL中的order by)

在这里插入图片描述

List<Student> reverse = stream.sorted(Comparator.comparing(Student::getSid).reversed()).collect(Collectors.toList());

Stream的sorted方法就是对数据进行排序:

  • 值类型数据排序(例如集合:List list =Arrays.asList(3, 2, 2, 3, 7, 3, 5)):
    • list.sorted() 正序
    • list.sorted(Comparator.reverseOrder()) 倒序
  • 引用类型数据排序(如上面的学生ArrayList):
    • stream.sorted(Comparator.comparing(Student::getSid)) 正序
    • stream.sorted(Comparator.comparing(Student::getSid).reversed()) 倒序

④分页取数(相当于SQL的limilt)在这里插入图片描述

List<Student> reverse = stream.limit(10).collect(Collectors.toList());

Stream的limit方法表示取几条操作

⑤分组(相当于SQL中的group by

在这里插入图片描述
Stream的collect方法除了可以将由集合转化的流再次转换成集合,还可以对集合进行分组,就像SQL中的group by一样

⑥map遍历集合中的每个元素

  • 值类型集合(如:strings = Arrays.asList(“abc”, “”, “bc”, “efg”, “abcd”,"", “jkl”);)
strings.stream().map(string -> string.toUpperCase()).collect(Collectors.toList());

这行代码将会遍历集合strings中的每个元素,将他们中的每个字母都转成大写字母

  • 引用类型集合(如本案例中的学生集合)
    在这里插入图片描述
List<String> names = stream.map(Student::getSname).collect(Collectors.toList());

这行代码遍历了所有的学生信息,取出了所有学生的name组成一个集合

⑦count(相当于SQL中的count(*)

在这里插入图片描述

long count = stream.filter(student -> student.getSsex().equals("女")).count();

这行代码统计了女生有几个

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值