在Java8中,出现了stream流的概念。我个人认为,流的使用可以帮助我们更好的对数据集合进行迭代。
下面,先简单看一下普通for循环和stream流的代码。
public static void main(String[] args) {
//取出偶数
List<Integer> list = Arrays.asList(1,2,3,4);
//1.for循环
List<Integer> newList1 = new ArrayList<>();
for (Integer integer : list) {
if(integer % 2 == 0){
newList1.add(integer);
}
}
System.out.println(newList1);
//2.stream流
List<Integer> newList2 = list.stream().filter(x -> x % 2 == 0).collect(Collectors.toList());
System.out.println(newList2);
}
输出结果:
[2, 4]
[2, 4]
可以看出,对于stream流的使用,有时是可以简化我们代码的负责度,并且配合lambda表达式,可以让代码更加容易被人理解。
下面简单介绍一下Java中stream流的使用:
1.创建stream流
List集合创建创建:调用List的stream方法即可,如 list.stream()
数组的创建方式为:通过Arrays.stream()传入数组即可,如:Arrays.stream(new Integer[]{1,2})
注:stream流被创建出来之后只能被使用一次,如需再次循环需要再次创建!
2. 常用方法介绍:
流的方法被分为中间操作和终端操作,顾名思义,中间操作是指调用方法后生成新的流,可以继续执行操作,而终端操作则是结束流的使用。
中间操作:
1.filter 过滤掉不符合的数据
2.limit 只取前x条数据
3.skip 跳过(删除)x条数据
4.distinct 去重复数据
5.sorted 排序
6.map 对数据重整,生成新的数据流(如何从用户集合流中取出用户年龄作为新的流)
终端操作:
1.count 统计数据数量
2.forEach 对流中每个数据都执行传入的方法
3.anyMatch 至少一个匹配,返回bool
4.allMatch 匹配所有,返回bool
5.collect 可以传入集合中的常用方法,例如:Collector.toList()将流转回集合,Collector.groupingBy()将流中数据分组
6.reduce 进行归约操作,例如求和等
今天就先做了一下Java中stream流的简单使用介绍,谢谢。