【Java总结_Stream】- 2022/3/24 Bruce

Stream

 

阶段

不调用终止方法,中间的操作不会执行

IntStream 常见方法

forEach(System.out::println)

forEachOrdered(System.out::println)


元素的收集collect()

1收集为Set: Collectors.toSet()

2收集为List: Collectors.toList()

3收集到任意的Collection类型: Collectors.toCollection(LindedList::new) 也可以使用如LinkedHashSet::new 和 PriorityQueue::new

4收集到Array: toArray(String[]::new)

 

5收集到Map: Collectors.toMap(Function.identity(), s-> (int) s.chars.distinct().count()) // key: t->t, value: 元素的不同的字母个数

6分组收集groupingBy

分组时,如果分组的字段中有值为null的时候,会抛Null Pointer Exception

解决方法: 使用Optional包裹一下 

Collectors.groupingBy(x->Optional.ofNullable(x));

 ---

Examples:

 

 

Example: group by + mapping to set

 

 

 groupby + reducing

多级分组

 

分区操作 Collectors.partitioningBy()  根据返回值是否为true,分为true列表,false列表

 

统计总数: Collectors.counting() 

拼接: Collectors.joining()

---

 

 

聚合操作

reduce()

 

 

方法引用

 


 

其他:

anyMatch()

sum/average/sumaryStatistics()

最大/最小/总和/平均值


比较器 Comparator

Optional<T> min(Comparator<? super T> comparator)

比数值: Comparator.comparing(Integer::intValue)

// 错误用法

Stream.max(Integer::max)

Stream.min(Integer::mix)

当使用Integer.max(v, k), 如果数据中全部都是正数,则返回值总是正数

Stream.max()中,是以返回值的正负和0值来判断数据大小的

 正确写法

 

 

比String: Comparator.comparing(String::valueOf)

对象类型Object: Comparator.comparing(User::getAge)

比日期: Comparrator.comparing(LocalDate::toEpochDay)

使用IntStream, LongStream, DoubleStream: IntSream.of(xx,xx).min()

sorted() 自然序排序

倒序: sorted(Comparator.reverseOrder())

sorted(Comparator.comparing(Student::getAge).reversed())


合并2个流: Stream.concat(xxStr1, xxStr2)

 ---

map ,

flatMap: 对流进行扁平化

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值