【AgileTC】_JDK8新特性函数式编程

【AgileTC】_JDK8新特性函数式编程

  • List.stream().map().collect(Collectors.toList())方法用于列表类型的转换,以通过一个User对象的ArrayList得到User对象内某个属性的列表为例,此处以字符串类型name属性为例,常规写法如下:

    1
    2
    3
    4
    5
    6
    List<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,其中每个方法分别具有各自的作用;

  • 以上各个方法的含义