【AgileTC】_JDK8新特性函数式编程
List.stream().map().collect(Collectors.toList())方法用于列表类型的转换,以通过一个User对象的ArrayList得到User对象内某个属性的列表为例,此处以字符串类型name属性为例,常规写法如下:1
2
3
4
5
6List<String> names=new ArrayList<String>();
//users是User实体类对象集合
for(int i=0;i<users.size();i++){
names.add(users.get(i).getName());
}使用该java8 api方法List.stream().map().collect(Collectors.toList())可以一行完成,写法如下:
1
2
3
4
5
6
7
8//users是User实体类对象集合
//getName是实体类属性的get方法
List<String> names= users.stream().map(User::getName).collect(Collectors.toList());
//还有一种写法
List<String> names= users.stream().map(user->user.getName()).collect(Collectors.toList());
//上述写法中的User::getName和user -> user.getName()都是lambda表达式。Stream.of(request.getPermIds().split(SystemConstant.COMMA)).map(Long::valueOf).collect(Collectors.toSet())该方法用于将字符串"1,2,3,4,5"转化成Long类型数据的集合,使得该集合包含1,2,3,4,5,其中每个方法分别具有各自的作用;