lambda&&stream

lambda

匿名函数 为了简化java的匿名内部类

事件监听ActionListener 接口(外部类)

内部类 类在其他地方用不到,索性就把这个类定义在类的内部使用

好处:1.内部可以使用外部类成员

           2.其他地方发现不了

             往往内部类只用一次,还需要创建一个内部类

             JAVA为了简化语法、

java2之前,函数/方法是不能当作参数传递的,必须将函数包装在对象中,

但是核心就是函数完成某个功能,还需要创建一个对象

JAVA2开始,对这一语法进行简化,

 

public static void main(String[] args) {
    ArrayList<String> arrayList=new ArrayList<>();
    arrayList.add("a");
    arrayList.add("c");
    arrayList.add("b");

  /*  arrayList.sort(new Comparator<String>() {
        @Override
        public int compare(String o1, String o2) {
            return o1.compareTo(o2);
        }
    });*/
    //匿名内部列,为了减少类的创建
    //此功能核心compareTo方法,但是java是面向对象的,方法是不能独立存在的,必须将方法包装在对象中
    arrayList.sort((a,b)->{
        return a.compareTo(b);
    });
    System.out.println(arrayList);
    
}

stream

处理数据集合(数组,集合类)

对数组,集合类 进行各种操作(过滤,排序···)

stream处理数据大体过程

数组/集合类 -->流-->各种操作(排序,过滤···)--结果

数组和集合类更偏向于存储数据

stream更偏向于数据操作

1.获取操作

/*
流操作
1.获取流,把集合/数组转化为stream对象
*/
ArrayList<Integer> arrayList=new ArrayList<>();
arrayList.add(1);
arrayList.add(2);
arrayList.add(3);
arrayList.add(4);
arrayList.add(5);
Stream<Integer> arr= arrayList.stream();


Integer[] arry=new Integer[]{1,2,3,4,5};
Stream<Integer> stream= Arrays.stream(arry);

Stream<Integer> stream1=Stream.of(1,2,3,4,5);

 

中间操作

filter:过滤流中的某些元素,

sorted(): 自然排序,流中元素需实现 Comparable 接口

distinct: 去除重复元素

limit(n): 获取 n 个元素

skip(n): 跳过 n 元素,配合

limit(n)可实现分页

map(): 将其映射成一个新的元素

/*
* 中间操作
   filter:过滤流中的某些元素,
   sorted(): 自然排序,流中元素需实现 Comparable 接口
   distinct: 去除重复元素
   limit(n): 获取 n 个元素
   skip(n): 跳过 n 元素,配合
   limit(n)可实现分页
   map(): 将其映射成一个新的元素
* */
public static void main(String[] args) {
    Integer[] arry=new Integer[]{1,2,3,3,2,4,5};
    Arrays.stream(arry)
            .filter((e)->{//过滤
                return e<5;
            })
            .sorted((o1,o2)->{//排序
                return o2-o1;
            })
            .distinct()//去重
            .forEach((e)->{//遍历
                System.out.println(e);
            });
    Stream<Integer> stream1=Stream.of(1,2,3,4,2,4,3,5);
    stream1.distinct()
            .limit(4)
            .skip(1)
            .forEach((e)->{
                System.out.println(e);
            });

终端操作

forEach: 遍历流中的元素

toArray:将流中的元素倒入一个数组

Min:返回流中元素最小值

Max:返回流中元素最大值

count:返回流中元素的总个数

Reduce:所有元素求和

anyMatch:接收一个 Predicate 函数,只要流中有一个元素满足条件则返 回 true,否则返回 false

allMatch:接收一个 Predicate 函数,当流中每个元素都符合条件时才返 回 true,否则返回 false

findFirst:返回流中第一个元素

collect:将流中的元素倒入一个集合,Collection 或 Map

/*
 * 终端操作

 forEach: 遍历流中的元素
 toArray:将流中的元素倒入一个数组
 Min:返回流中元素最小值
 Max:返回流中元素最大值
 count:返回流中元素的总个数
 Reduce:所有元素求和
 anyMatch:接收一个 Predicate 函数,只要流中有一个元素满足条件则返 回 true,否则返回 false
 allMatch:接收一个 Predicate 函数,当流中每个元素都符合条件时才返 回 true,否则返回 false
 findFirst:返回流中第一个元素
 collect:将流中的元素倒入一个集合,Collection 或 Map
 * */
 public static void main(String[] args) {
     Stream<Integer> stream1=Stream.of(1,2,3,4,2,4,3,5);
     /*stream1.distinct()
             .toArray();*/
    /*Integer max=stream1.max((o1,o2)->{
         return o1-o2;
     }).get();
     System.out.println(max);*/
  /*   Integer min=stream1.min((o1,o2)->{
         return o1-o2;
     }).get();
     System.out.println(min);*/
/*   long a=  stream1.distinct()
             .count();
     System.out.println(a);*/

     boolean res=stream1.anyMatch((e)->{
         return e>5;
     });
     System.out.println(res);
       boolean res=stream1.allMatch((e)->{
            return e>0;
        });
        System.out.println(res);
 }

 

 

 

 

 

  • 4
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值