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

文章公众号连接:https://mp.weixin.qq.com/s/m5Knf35LFH5DZEiqUsUMqw

简介

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对象里面的每一个属性

示例代码

public static void main(String[] args) {
		List<Test> list = init();
		list.stream().forEach(test->{
			System.out.println(test.getAge());
			System.out.println(test.getName());
		});
	}

sorted排序

示例地址

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

示例说明

根据年龄排序

示例代码

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

public static void main(String[] args) {
		List<Test> list = init();
		list.stream().sorted(Comparator.comparing(Test :: getAge)).forEach(test->{
			System.out.println(test.getAge());
			System.out.println(test.getName());
		});
	}

filter过滤

示例地址

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

示例说明

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

示例代码

public static void main(String[] args) {
		List<Test> list = init();
		list.stream().filter((Test test)->test.getAge()>5).forEach(test->{
			System.out.println(test.getAge());
			System.out.println(test.getName());
		});
	}

limit截断

示例地址

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

示例说明

输出前5条数据

扫描二维码关注公众号,回复: 8679524 查看本文章

示例代码

public static void main(String[] args) {
		List<Test> list = init();
		list.stream().limit(5).forEach(test->{
			System.out.println(test.getAge());
			System.out.println(test.getName());
		});
	}

skip跳过

示例地址

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

示例说明

跳过前五条数据

示例代码

public static void main(String[] args) {
		List<Test> list = init();
		list.stream().skip(5).forEach(test->{
			System.out.println(test.getAge());
			System.out.println(test.getName());
		});
	}

distinct 去重

示例地址

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

示例说明

去除重复的数据

示例代码

public static void main(String[] args) {
		List<Test> list = init();
		list.stream().distinct().forEach(test->{
			System.out.println(test.getAge());
			System.out.println(test.getName());
		});
	}

基础数据统计

示例地址

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

示例说明

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

示例代码

public static void main(String[] args) {
		List<Test> list = init();
		IntSummaryStatistics statics = list.stream().mapToInt(test->test.getAge()).summaryStatistics();
		System.out.println("总共人数:" + statics.getCount());
	    System.out.println("平均年龄:" + statics.getAverage());
	    System.out.println("最大年龄:" + statics.getMax());
	    System.out.println("最小年龄:" + statics.getMin());
	    System.out.println("年龄之和:" + statics.getSum());
	}
发布了75 篇原创文章 · 获赞 85 · 访问量 10万+

猜你喜欢

转载自blog.csdn.net/zhangchangbin123/article/details/91046148