公众号:(百合骑士coding)~ 分享好玩的新技术
一、Stream是什么?
Stream是Java8处理集合的关键抽象概念,他可以对集合进行非常复杂的查找,过滤,筛选等操作。
二、Stream的基本操作
1.创建Stream
从集合和数组中获取流。
2.中间操作
对数据源的数据进行操作。
3.终止操作
终止操作执行中间操作链,并产生结果。
这里要注意对流操作完成之后需要进行关闭操作。
三、Stream的具体操作
1、中间操作-筛选与切片
filter:接收Lambda表达式,从流中排除某些操作。
limit:截断流,使元素不超过给定对象。
skip(n):跳过元素,返回一个扔掉了前n个元素的流
distinct:筛选,通过流生成的hashCode()和equals()去除重复的元素。
2、中间操作-映射
map:接收Lambda,将元素转换为其他形式或者提取信息。接收一个函数作为参数,该函数会被应用到每个元素上,并将其映射成一个新的元素。
flatMap:接收一个函数作为参数,将流中的每一个值都换成另一个流,然后把所有的流连接成一个流。
就在这里我们想把List转换为int数组
public static void main(String[] args) {
List<Integer> list = new ArrayList<>();
list.add(1);
list.add(2);
int[] arr = list.stream().mapToInt(Integer::intValue).toArray();
for(int i:arr){
System.out.println(i);
}
}
3.中间操作-排序
sorted():自然排序
sorted(Comparator com):定制排序
5.终止操作-查找和匹配
- allMatch–检查是否匹配所有元素
- anyMatch–检查是否至少匹配一个元素
- noneMatch–检查是否没有匹配所有元素
- findFirst–返回第一个元素
- findAny–返回当前流中的任意元素
- count–返回流中元素的总个数
- max–返回流中最大值
- min–返回流中最小值
该处使用的url网络请求的数据。
总结
这里就是我想告诉大家的,大家可以多用流操作,不然就只能用一下循环来转换了。