Java学习--Stream流

1.获取方式

集合类型默认方法使用stream流方法
单列集合default stream< E > stream()collection中的默认方法
双列集合无法使用stream流
数组public static < T > stream(T[] array)arrays工具类中的静态方法
一堆零散数据public static < T > stream< T > of(T…values)stream接口中的静态方法

注意:
stream接口中的静态方法of
它的形参是一个可变参数,可以传递一堆零散的数据,也可以传递数组
但是数组必须是引用数据类型的,如果传递基本数据类型,是会把整个数组当作一个元素,放到stream中

2.中间方法

方法描述
stream<T> filter(Predicate<? super T> predicate)过滤流中的元素
stream<T> limit(long maxSize)获取流中的前 maxSize 个元素
stream<T> skip(long n)跳过流中的前 n 个元素
stream<T> distinct()去除流中的重复元素,依赖 hashCodeequals 方法
static <T> stream<T> concat(stream a, stream b)合并流 a 和流 b 为一个新的流
stream<T> map(Function<T, R> mapper)转换流中的元素类型
  • 注意:
  • 中间方法返回新的stream流,原来的stream流只能使用一次,建议使用链式编程

例:Stream < String > stream1 = list.stream().filter(s-> s.startwith(“张”)).forEach(s->sout(s));

  • 修改stream流中的数据,不会影响原来集合或者数组中的数据

  • distinct方法的底层是重写hashcode和equals方法进行去重的

  • map方法的匿名内部类
    例:

list.stream(new Function<String, Integer>(){
//第一个类型:流中原本的数据类型
//第二个类型:要转成之后的类型
 	@Override
	public Integer apply(){
	//apply的形参s:依次表示流里面的每一个数据
	//返回值:表示转换之后的数值
	
		return null;
	}
})

//lambda链式编程
list.stream().map(s-> Integer.parseInt(s.split("-")[1]))
.forEach(s->sout(s));

3.stream流的终结方法

void forEach(Consumer action) 遍历
long count() 统计
toArray() 收集流中的数据,放到数组中
collect(Collector collector) 收集流中的数据,放到集合中

4.stream流中的收集方法Collect

Collectors方法

  • tolist() 收集到list集合中
  • toset() 收集到set集合中(hashset会去重)
  • tomap(键的规则,值的规则)

tomap

  • 参数一表示键的生成规则
    • Function泛型一:表示流中每一个数据的类型
    • Function泛型二:表示Map集合中键的数据类型
    • 方法apply形参:依次表示流里面的每一个数据
    • 方法体:生成键
    • 返回值:已经生成的键
  • 参数二表示值的生成规则
    • Function泛型一:表示流中每一个数据的类型
    • Function泛型二:表示Map集合中值的数据类型
    • 方法apply形参:依次表示流里面的每一个数据
    • 方法体:生成值
    • 返回值:已经生成的值
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值