Java8新特性Stream简介stream().filter和stream().map区别
使⽤.stream()或.parallelStream()将集合⽣成流,然后可以对其中的元素进⾏流式操作,对流的操作中最常⽤的是filter和map⽅法,简单写了下,如下:
import java.io.*;
import java.util.stream.Collectors;
import java.util.List;
import java.util.ArrayList;
class test
{
public static void main (String[] args)
{
List<Integer> list =new ArrayList<>();
for(int i =0; i <10; i++){
list.add(i);
}
List<Integer> list1 = list.stream().filter(i -> i <=5).List());
System.out.println(list1);
List<Integer> list2 = list.stream().map(i -> i*i).List());
System.out.println(list2);
}
}
以上代码段的输出结果:
[0, 1, 2, 3, 4, 5]
[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
java streamfilter()和map()的区别:
filter是过滤操作,返回结果为true的数据;⽽map的作⽤是将流中的每⼀个元素T映射为R。
stream其他常⽤⽅法:
⽅法说明
distinct()去重
limit(n)返回前n个元素
skip(n)跳过n个元素
sorted()排序
这⾥⾯前⾯三个⽅法的使⽤都⽐较简单,就不说了,sorted的使⽤⽰例,假设有个UserDTO,通过它的age属性进⾏排序:
userList = userList.stream().sorted(Comparatorparing(UserDTO::getAge)).List());
如果age有可能为空,就会报错NullPointerException,如果需要⽀持可以为空,需要写成这样:
userList = userList.stream().sorted(Comparatorparing(UserDTO::getAge,Comparator.nullsLast(Integer::compareTo))).List());
另外说⼀下.parallelStream(),它是⼀个并⾏流,和forEach⼀起使⽤可以快速遍历,⽰例:
userDTOList.parallelStream().forEach(u ->{
if(xxx){
}
});
该段代码就相当于多线程的:
for(User u : userDTOList){ ……
}
-end-

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。