Java基础之《Stream流》

1、什么是stream流
stream流的使用,是建立在Lambda表达式的基础上
可以看做是数据流在管道中传输,并且可以在管道的节点上进行处理
+--------------------+       +------+   +------+   +---+   +-------+
| stream of elements +-----> |filter+-> |sorted+-> |map+-> |collect|
+--------------------+       +------+   +------+   +---+   +-------+

2、生成流
在Java8中,集合接口有两个方法来生成流:
stream() − 为集合创建串行流。
parallelStream() − 为集合创建并行流。

3、节点操作
forEach
迭代流中的每个数据

map
用于映射每个元素到对应的结果

filter
用于通过设置的条件过滤出元素

limit
用于获取指定数量

sorted
用于对流进行排序

Collectors
实现了很多归约操作,例如将流转换成集合和聚合元素

4、流的常用场景
1)将数组 ["a","B","a"] 转换Map。对应key为小写,value为大写,结果:{"a":"A","b":"B"}

import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
import java.util.stream.Stream;

public class Test {
 
	public static void main(String[] args) {
		String str[] = new String[] {"a","B","a"};
		List<String> lists = Stream.of(str).collect(Collectors.toList()); //将数组转换成list
		//将list转换成map
		//(o1, o2) -> o1)表示如果有key相同,则取第一个元素
		Map<String, String> map = lists.stream().collect(Collectors.toMap(t->t.toLowerCase(), t->t.toUpperCase(), (o1, o2) -> o1));
		for(String key : map.keySet()) {
			System.out.println(key + " " + map.get(key));
		}
	}
}

2)将map中key转化为大写,value转为小写
原Map: {"a":"A","b":"B"}
结果Map: {"A":"a","B":"b"}

import java.util.HashMap;
import java.util.Map;

public class Test {

	public static void main(String[] args) {
		Map<String, String> map = new HashMap<>();
		Map<String, String> map2= new HashMap<>();
		
		map.put("a", "A");
		map.put("b", "B");
		map.forEach((k,v)->{
			map2.put(k.toUpperCase(), v.toLowerCase());
		});
		for(String key : map2.keySet()) {
			System.out.println(key + " " + map2.get(key));
		}
	}
}

5、stream不会改流的底层数据,即流入的原始数据
 

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

猜你喜欢

转载自blog.csdn.net/csj50/article/details/120060236