Java Lambda&&Stream

本文介绍了Java 8中的Lambda表达式和Stream流的概念及使用。Lambda表达式简化了函数式编程,允许将匿名函数作为参数传递,而Stream流则提供了对数据集合的高级操作方式,如过滤、排序等。通过实例展示了如何运用Lambda表达式实现无参和有参的函数,以及Stream流的中间操作和终端操作。
摘要由CSDN通过智能技术生成

一. Lambda表达式

1.java是面向对象语言,面向对象传递参数不能是单个函数,sort需要一个比较函数,只创建一个对象,将方法包装在对象中传递,可以通过创建匿名内部类,将函数包装起来.

2.jdk8之后为了再次简化语法,推出Lambda语言,Lambda就是一个匿名函数,简化匿名内部类语法,以后可以进行匿名函数当作函数传递,java语言会自己推断,补全代码

public interface Oper {

   void show();//无参无返回值抽象方法
   
}
public class TestOper {

    public void test(Oper oper){
          oper.show();//调用接口中抽象方法


    }

    public static void main(String[] args) {

        TestOper testOper=new TestOper();

        //无参无返回值lambda表达式
            testOper.test(()->{
            System.out.println("无参函数");
        });


    }
}
public interface Oper {

//   void show();//无参无返回值抽象方法
    int add(int a, int b);//有参有返回值抽象方法

}
public class TestOper {

    public void test(Oper oper){
//          oper.show();//调用接口中抽象方法
            oper.add(2,3);


    }

    public static void main(String[] args) {

        TestOper testOper=new TestOper();

        /*//无参无返回值lambda表达式
            testOper.test(()->{
            System.out.println("无参函数");
        });
*/

        //有参有返回值lambda表达式
             testOper.test((a,b)->{
                 int c=a+b;
                 System.out.println(c);
                 return c;
             });
    }
}

 3.使用lambda表达式时只能有一个抽象方法,因为需要自动类型转换

二.Stream流

1.流:流是java8推出的新功能,与IO流完全不同的,提供了对象数据集合进行操作的各种方法,我们只需要声明做什么即可

2.java集合,数组主要存储数据,而Stream主要作用是对集合进行操作

数据集合->Stream->filter->Stream->sorted->流->to list/sum/max

(获取流)                         (流的中间操作)                      (终端操作)

对集合进行遍历的高级迭代器

import java.util.Arrays;
import java.util.stream.Stream;

public class StreamDemo {

    public static void main(String[] args) {
        Integer []a={1,2,3,5,6,6,7,9,8};//定义一个整数型数组

        //获取流
        Stream.of(1,2,3,5,6,6,7,9,8);
        Arrays.stream(a)

        //中间操作
              .distinct()//去重
              .filter((e)->{return e<3;})//过滤条件
              .sorted((x,y)->{return x-y;})//进行排序
              .skip(2)//进行分页,分配几个元素
              .limit(3)//跳过两个元素

        //终端操作
              .forEach((e)->{
                  System.out.println(e);
              });
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值