StreamAPI学习笔记!!!!

目录

 

前言

一、StreamAPI?

二、使用步骤

1.创建

1-1.由Collection直接创建

1-2.数组可以通过Arrays.stream静态方法来创建

1-3.通过Stream.of静态方法创建

2.中间处理

2-1.过滤(filter)

2-2.截断(limit)

2-3.舍弃(skip)

 

 



前言

在学习新的知识总是容易忘记,遂写此篇,一为加深印象,二为他日复习,三曰助人为乐。

此文有参靠过部分作者的写作框架,如有侵权请留言,吾必改。


提示:以下是本篇文章正文内容,下面案例可供参考

一、StreamAPI?

JAVA8中一个重要概念就是流——stream

二、使用步骤

1.创建

1-1.由Collection直接创建

Collection接口及其被继承的List、Set、Queue、Stack等类/接口的实体可以直接创建Stream。

代码如下(示例):

List<String> list = new ArrayList<>();
Stream<String> stream = list.stream();

Map<String, String> map = new HashMap<>();
Stream<Entry<String, String>> stream = map.entrySet().stream();

1-2.数组可以通过Arrays.stream静态方法来创建

代码如下(示例):

String[] arr = new String[5];
Stream<String> steam = Arrays.stream(arrays);

1-3.通过Stream.of静态方法创建

例如:

Stream<String> stream = Stream.of("a", "b", "c");

1-4.通过Stream.iterate方法生成无限流

例如:

Stream<Integer> stream = Stream.iterate(0, x -> x + 2); // 生成所有的非负偶数流

1-5.通过Stream.generate方法生成无限流

例如:

Stream<Double> stream = Stream.generate(() -> Math.random()); // 生成无限多项的随机数流

2.中间处理

所有的中间处理都是惰性的,并不会即时执行。

2-1.过滤(filter)

接受lambda,从流中排除某些元素(过滤)。

例如:

Stream<Integer> stream = Stream.of(4,5,6,3,-1,-2);
Stream.filter(value -> value > 0).forEach(System.out::print);

输出为: 456

2-2.截断(limit)

保留流中的前n个元素。可提升处理速度。

例如:

    @Test
	void test01(){
		Stream<Integer> stream = Stream.iterate(0, x -> x + 2);
		stream.limit(5).forEach(System.out::print);
	}

输出为: 02468

2-3.舍弃(skip)

舍弃流中的前n个元素

例如

  @Test
	void test01(){
		Stream<Integer> stream = Stream.iterate(0, x -> x + 2);
		stream.limit(5).skip(3).forEach(System.out::print);
	}

输出为:68

2-4.去重(distinct)

通过流所生成元素的hashCode()和equals()去除重复元素。

例如

    @Test
	void test02(){
		Stream<Integer> stream = Stream.of(1,2,2,2,3,4,5);
		stream.distinct().forEach(System.out::print);
	}

输出为: 12345

2-5.排序 (sorted)

对Stream流中的元素进行排序

例如

  @Test
	void test02(){
		Stream<Integer> stream = Stream.of(1,3,2,5,4);
		stream.sorted().forEach(System.out::print);
	}

输出为: 12345

2-6.映射(map)

通过lambda表达式,将每个元素加工成新元素.

    @Test
	void test03(){
		Stream.of(1,3,5,2,4).map(value -> String.format("我是第%d        名",value)).forEach(System.out::println);
	}

输出为:

我是第1名
我是第3名
我是第5名
我是第2名
我是第4名
 

 


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值