目录
distinct 元素去重,依赖(hashcode和equal法)
concat(Stream a, Stream b) 合并a和b两个流为一个流
collect(Collector collector) 收集流中的数据,放到集合中(list,set,map)
一、定义一个集合,并添加一些数 1,2,3,4,5,6,7,8,9,10过滤奇数,只留下偶数。并将结果保存起来
在Java中,Stream流是一种用于处理数据的抽象概念。它可以用来操作集合、数组、输入/输出资源等,提供了一种统一的处理方式。
在Java 8中引入了Stream API,它可以让开发者更方便地处理数据集合,以函数式编程的方式进行操作。Stream流支持多种操作,可以分为两类:中间操作和终端操作。
中间操作是指在数据流中进行处理,可以用来过滤、映射、排序等操作。常用的中间操作有:filter、map、sorted等。
终端操作是指对数据流进行最终的处理,可以用来收集、计数、求和等操作。常用的终端操作有:collect、count、sum等。
Stream流的作用
结合了Lambda表达式,简化集合、数组的操作
Stream流的使用步骤:
先得到一条Stream流(流水线),并把数据放上去,再利用Stream流中的API进行各种操作
获取Stream流:
单列集合
方法名:
default Stream<E>stream()
collection中的默认方法
完整代码在这里
public class StreamDemo {
public static void main(String[] args) {
ArrayList<String>list=new ArrayList<>();
Collections.addAll(list,"a","b","c","d","e");
//获取到一条流水线,并把集合中的数据放到流水线上
Stream<String> stream1 = list.stream();
//使用终结方法打印一下流水线上的所有数据
stream1.forEach(s -> System.out.println(s));
}
}
双列集合
无法直接使用Stream流
可以先用keyset方法获取所有的键,再获取Stream流
也可以使用entryset方法获取所有的键值对对象,在获取Stream流
数组
方法名:
public static <T> Stream<T> stream(T[] array)
Arrays工具类中的静态方法
完整代码在这里
public class StreamDemo3 {
public static void main(String[] args) {
int[]arr={1,2,3,4,5};
Arrays.stream(arr).forEach(s-> System.out.println(s));
}
}
一堆零散的数组
方法名:
public static<T> stream<T> of(T... values)
Stream接口中的静态方法
注意:
Stream接口中静态方法of的细节:方法的形参是一个可变参数,可以传递一堆零散的数据,也可以传递数组但是数组必须是引用数据类型的,如果传递基本数据类型,是会把整个数组当做一个元素,放到stream当中。
基本数据类型:
引用数据类型:
Stream流的中间方法
Stream<T>filter(Predicate<? super T> predicate) 过滤
Stream<T>limit(long maxSize) 获取前几个元素
Stream<T> skip(long n) 跳过前几个元素
Stream<T> distinct() 元素去重,依赖(hashcode和equal法)
static <T>Stream<T>concat(Stream a, Stream b) 合并a和b两个流为一个流
Stream<R> map(Function<T ,R> mapper) 转换流中的数据类型
注意:
中间方法,返回新的Stream流,原来的Stream流只能使用一次,建议使用链式编程
修改Stream流中的数据,不会影响原来集合或者数组中的数据
filter过滤
练习: 把“张”开头的留下,其余数据过滤不要
上面是拿匿名内部类写的,可以用Lambda表达式简化一下
标签:name,Stream,流中,数组,集合,public From: https://blog.csdn.net/m0_46702681/article/details/138816982