【精品】Java-Stream流详解

如何学会JDK8中的Stream流,用它来提高开发效率?

Go!

创建不可变的集合(Immutable 不可变的)

场景

1、数据不能被修改
2、被不信用的方法调用

方法

在List、Set、Map接口中都存在静态的of方法,可以获取一个不变的集合。
注:这个集合不能被添加、修改、删除元素。

List<String> list = List.of("张三", "李四"); 
// 对该对象进行 add、remove、set操作会报错
Set<String> set = Set.of("张三", "李四"); 
// 一旦创建,只能进行查询操作
Map<String, String> map = Map.of("key", "value"); 
// 键不能重复;底层源码of没有可变参数,最多10个键值对;超过10个,需要使用ofEntries/copyOf

初试 Stream 流

// 将集合中名字以“张”开头,并且长度为3的名字打印出来
list.stream().filter(name -> name.startWith("张")).filter(name -> name.length == 3)
	.forEach(name -> System.out.println(name));

Stream 流的思想

类似工厂流水线模式的流程处理。

Stream 流的作用

结合Lambda表达式,简化对数组、集合的操作。

Stream 流的使用步骤

先得到一条Stream流(流水线),并把数据放上去,然后使用各种API进行操作。

过滤转换 中间方法
统计打印 终结方法(最后一步)

不同的集合生成Stream流的方法

双列集合需要使用 keySet 或者 entrySet 方法,再使用 Stream 方法。

Stream.of() 方法,必须是引用数据类型,如果是基本类型,不会自动装箱,会把整个数组作为整体放入流中。

Stream 流的中间方法

Stream 流的中间方法
注意:
1、中间方法会生成新的流。
2、caocat 要注意两个流中的对象类型保持一致,否则会自动选取大的作为共同父类。

// map() 方法的使用;第一个参数是传入数据类型,第二个参数为返回类型
list.stream().map(new Function<String, Integer>(){
	@Override
	public Integer apply(String s){
		return result;
	}
}).forEach(s -> System.out.println(s));

=====================================================

list.stream().map(s -> Integer.parseInt(s)).forEach(s -> System.out.println(s));

注意:第二个参数为泛型,泛型里面不能写基本数据类型。

Stream 流的终结方法

Stream 流的终结方法

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值