利用jdk1.8的stream,让你的代码上升一个层次

本文详细介绍Java 8中Stream API的基本用法及高级特性,包括数据遍历、排序、过滤、截断、跳过、去重等操作,并提供基础数据统计的示例代码,帮助开发者快速掌握这一高效数据处理工具。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

简介

jdk1.8新增了一个接口类stream,和我们之前接触的字节流概念不一样,stream相当于高级版的Iterator,可以通过lambada表达式对集合就行各种遍历高效的聚合操作,或者大批量的数据操作。 stream:数据串行操作 parallelStream:并行操作,在多核cpu下优势明显

使用

forEach循环数据

示例地址

https://github.com/itrickzhang/stream-demo-1/blob/master/src/main/java/com/example/demo/examples/ForeachSample.java

示例说明

循环输出list对象里面的每一个属性

示例代码

  1. public static void main(String[] args) {

  2. List<Test> list = init();

  3. list.stream().forEach(test->{

  4. System.out.println(test.getAge());

  5. System.out.println(test.getName());

  6. });

  7. }

sorted排序

示例地址

https://github.com/itrickzhang/stream-demo-1/blob/master/src/main/java/com/example/demo/examples/SortedSamples.java

示例说明

根据年龄排序

示例代码

:: 意思是映射Test类下的getAge方法

  1. public static void main(String[] args) {

  2. List<Test> list = init();

  3. list.stream().sorted(Comparator.comparing(Test :: getAge)).forEach(test->{

  4. System.out.println(test.getAge());

  5. System.out.println(test.getName());

  6. });

  7. }

filter过滤

示例地址

https://github.com/itrickzhang/stream-demo-1/blob/master/src/main/java/com/example/demo/examples/FilterSample.java

示例说明

条件过滤,输出年龄大于5的数据

示例代码

  1. public static void main(String[] args) {

  2. List<Test> list = init();

  3. list.stream().filter((Test test)->test.getAge()>5).forEach(test->{

  4. System.out.println(test.getAge());

  5. System.out.println(test.getName());

  6. });

  7. }

limit截断

示例地址

https://github.com/itrickzhang/stream-demo-1/blob/master/src/main/java/com/example/demo/examples/LimitSample.java

示例说明

输出前5条数据

示例代码

  1. public static void main(String[] args) {

  2. List<Test> list = init();

  3. list.stream().limit(5).forEach(test->{

  4. System.out.println(test.getAge());

  5. System.out.println(test.getName());

  6. });

  7. }

skip跳过

示例地址

https://github.com/itrickzhang/stream-demo-1/blob/master/src/main/java/com/example/demo/examples/SkipSample.java

示例说明

跳过前五条数据

示例代码

  1. public static void main(String[] args) {

  2. List<Test> list = init();

  3. list.stream().skip(5).forEach(test->{

  4. System.out.println(test.getAge());

  5. System.out.println(test.getName());

  6. });

  7. }

distinct 去重

示例地址

https://github.com/itrickzhang/stream-demo-1/blob/master/src/main/java/com/example/demo/examples/DistinctSample.java

示例说明

去除重复的数据

示例代码

  1. public static void main(String[] args) {

  2. List<Test> list = init();

  3. list.stream().distinct().forEach(test->{

  4. System.out.println(test.getAge());

  5. System.out.println(test.getName());

  6. });

  7. }

基础数据统计

示例地址

https://github.com/itrickzhang/stream-demo-1/blob/master/src/main/java/com/example/demo/examples/StatisticsSample.java

示例说明

获取总共人数、平均年龄、最大年龄、最小年龄、年龄之和

示例代码

  1. public static void main(String[] args) {

  2. List<Test> list = init();

  3. IntSummaryStatistics statics = list.stream().mapToInt(test->test.getAge()).summaryStatistics();

  4. System.out.println("总共人数:" + statics.getCount());

  5. System.out.println("平均年龄:" + statics.getAverage());

  6. System.out.println("最大年龄:" + statics.getMax());

  7. System.out.println("最小年龄:" + statics.getMin());

  8. System.out.println("年龄之和:" + statics.getSum());

  9. }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值