jdk8新特性Stream

2 篇文章 0 订阅
1 篇文章 0 订阅
  1. 准备阶段

    新建实体类Stream

     private String id;
        private String name;
        private Integer age;
        private BigDecimal pay;
        public Stream(String id, String name,Integer age,BigDecimal pay) {
            this.id = id;
            this.name = name;
            this.age=age;
            this.pay=pay;
        }
    
        @Override
        public String toString() {
            return "Stream{" +
                    "id='" + id + '\'' +
                    ", name='" + name + '\'' +
                    ", age='" + age + '\'' +
                    ", pay='" + pay + '\'' +
                    '}';
        }
    
        public String getId() {
            return id;
        }
    
        public String getName() {
            return name;
        }
    
        public void setId(String id) {
            this.id = id;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    
        public Integer getAge() {
            return age;
        }
    
        public void setAge(Integer age) {
            this.age = age;
        }
    
        public BigDecimal getPay() {
            return pay;
        }
    
        public void setPay(BigDecimal pay) {
            this.pay = pay;
        }
    

    新建两个集合

            List<Stream> list=new ArrayList<>();
            list.add(new Stream("1","李三",34,new BigDecimal(0.1)));
            list.add(new Stream("2","李大",58,new BigDecimal(20.5)));
            list.add(new Stream("3","李五",29,new BigDecimal(52.2)));
            list.add(new Stream("4","李八",18,new BigDecimal(25.3)));
            list.add(new Stream("5","李七",20,new BigDecimal(35.65)));
            List<String> list2=new ArrayList<>();
            list2.add("1 2 3");
            list2.add("4 5 6");
            list2.add("7 8 9");
    
  2. filter

    filter 方法用于通过设置的条件过滤出元素。

       list=list.stream().filter(Stream->Stream.getId()=="1").collect(Collectors.toList());
    
  3. sorted

    sorted 方法用于对流进行排序。

     //按年龄排序,从小到大,升序
    list=list.stream().sorted((p1,p2)->p1.getAge()-p2.getAge()).collect(Collectors.toList());     list=list.stream().sorted(Comparator.comparingInt(Stream::getAge)).collect(Collectors.toList());
    //从大到小降序  
    list=list.stream().sorted(Comparator.comparingInt(Stream::getAge).reversed()).collect(Collectors.toList()));
    
  4. Limit

    返回前n个。

    list=list.stream().limit(2).collect(Collectors.toList());
    
  5. Skip

    去除前n个。

     list=list.stream().skip(2).collect(Collectors.toList());
    
  6. Map

    把一个集合中的字段映射到另一个集合。

     List<String> stringList=list.stream().map(Stream::getName).collect(Collectors.toList())
    
  7. filterMap

    list字符串连接

    list2=list2.stream().map(m->m.split(" ")).flatMap(Arrays::stream).collect(Collectors.toList())```
    
  8. anyMatch

    流中是否有一个元素匹配给定的T->boolean条件

    流中是否包含任一个年龄等于34的数据,如果有输出true

    boolean b=list.stream().anyMatch(stream -> stream.getAge()==34);
    
  9. allMatch

    流中是否所有元素都匹配给定的条件
    流中是否全部的年龄都大于20

    boolean b=list.stream().allMatch(stream -> stream.getAge()>20);
    
  10. reduce

    统计年龄

    int sum=list.stream().map(Stream::getAge).reduce(0,(a,b)->a+b);
    int sum=list.stream().map(a->a.getAge()).reduce(new Integer(0),(a,b)->a+b);
    BigDecimal sum=list.stream().map(Stream::getPay).reduce(new BigDecimal(0),(a,b)->a.add(b),BigDecimal::add);
    
  11. count

    总记录条数

    long count=list.stream().count();
    
  12. forEach

    list.stream().forEach(System.out::println);
    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值