JAVA8特性之 ..stream().map().collect()

前言:

        实习时看公司的项目代码,看到了如下代码,当时很懵,这是什么?查阅了相关资料,现写下笔记以免忘掉。

                

说明:

        在解释之前先说明下这几个常用api

        《1》stream():把一个源数据转换成流。

        《2》map:用于映射每个元素到对应的结果。

        《3》->:正则表达式。

        《4》filte:用于通过设置条件过滤数据。

        《5》sorted:用于对流进行排序。

        《6》Collectors:实现很多归约操作。

解释:

        其实这种写法就相当于我们很熟悉的写法【对象转换为其他对象】,下面我将列举三种例子,就能掌握这种新特性的写法:

《1》大写字符串列表

//我们以前的写法
     List<String> list1= Arrays.asList("a","b","c");
     List<String> list2=new ArrayList<>();
     for (String s:list1) {
         list2.add(s.toUpperCase());
     }
     System.out.println(list2);//[A, B, C]

//新特性写法1
     List<String> list3=list1.stream().map(s->s.toUpperCase).collect(Collectors.toList());                       
     System.out.println(list3);//[A, B, C]

//新特性写法2
     List<String> 
     list4=list1.stream().map(String::toUpperCase).collect(Collectors.toList());
     System.out.println(list4);//[A, B, C]

《2》对象列表->字符串列表

//我们以前的写法
   List<Student> list1=Arrays.asList(new Student("古力娜扎",18),new Student("迪丽热巴",19));
   List<String> list2=new ArrayList<>();
   for(Student s:list1){
       list2.add(s.getName());
   }
   System.out.println(list2);//[古力娜扎, 迪丽热巴]

//新特性写法1
   List<String> list3=list1.stream().map(s->s.getName()).collect(Collectors.toList());
   System.out.println(list3);//[古力娜扎, 迪丽热巴]

//新特性写法2
   List<String> list4=list1.stream().map(Student::getName).collect(Collectors.toList());
   System.out.println(list4);//[古力娜扎, 迪丽热巴]

《3》对象列表->其他对象列表

//我们以前的写法
   List<Student> list1=Arrays.asList(new Student("古力娜扎",18),new Student("迪丽热巴",19));
   List<Start> list2=new ArrayList<>();
   for(Student s:list1){
       Start s1=new Start();
       s1.setName(s.getName());
       s1.setAge(s.getAge());
       s1.setSex("woman");
       list2.add(s1);
   }
   System.out.println(list2);//[Start@6d6f6e28, Start@135fbaa4]  未重写toString方法,输出的是地址

//新特性写法
   List<Start> list3=list1.stream().map(temp->{
       Start s=new Start();
       s.setName(temp.getName());
       s.setAge(temp.getAge());
       s.setSex("woman");
       return s;
   }).collect(Collectors.toList());
   System.out.println(list3);//[Start@6acbcfc0, Start@5f184fc6]

  • 7
    点赞
  • 49
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值