JAVAEE_____枚举和Lambda表达式

枚举和Lambda表达式

1. 枚举

1.1 定义:

使用enum 定义,enum和类是同级别的。用来表示一组相同业务的值

1.2switch判断

public enum ColorEnom {
    
    
    //枚举命名格式:所有枚举值使用全部字母大写的形式定义
    RED,GREEN,BLACK;
}

在这里插入图片描述

在这里插入图片描述

public class App {
    
    
    public static void main(String[] args) {
    
    
       printColor(ColorEnom.GREEN);
    }

    public static void printColor(ColorEnom colorEnom){
    
    
        switch (colorEnom){
    
    
            case RED:
                System.out.println("这是红色");
                break;
            case GREEN:
                System.out.println("这是绿色");
                break;
            case BLACK:
                System.out.println("这是黑色");
                break;
            default:
                System.out.println("这是一个未知颜色");
                break;

        }
    }
}

在这里插入图片描述

优点
1. 可读性高
在这里插入图片描述

2. 减少了参数传递的错误率
在这里插入图片描述

3. 如果使用枚举,那么switch(多条件判断) 的写法更加简单,语义也更清晰。
在这里插入图片描述

4. 代码更加优雅
5. 枚举有内置方法,功能更加强大

缺点:不可继承,无法扩展

1.3 枚举常用方法

1.3.1 values() 使用

:以数组形式返回枚举类型的所有成员

public class App {
    
    
    public static void main(String[] args) {
    
    
         eachEnum();

    }
 private static void eachEnum(){
    
    
        ColorEnom[] arrs = ColorEnom.values();
         for(ColorEnom item : arrs){
    
    
          System.out.println(item);
          }
    }
}

1.3.2 ordinal() 使用

:获取枚举成员的索引位置

public class App {
    
    
    public static void main(String[] args) {
    
    
     //  printColor(ColorEnom.GREEN);
        eachEnum();

    }
    private static void eachEnum(){
    
    
        ColorEnom[] arrs = ColorEnom.values();
        for(ColorEnom item : arrs){
    
    
            int enumIdx = item.ordinal();

            System.out.println(item + ":" +enumIdx);
        }
    }
}

1.3.3 valueOf() 使用

:将普通字符串转换为枚举实例

1.3.4compare() 使用

:比较两个枚举成员在定义时的顺序
谁 compareTo(shui)
下标 – 下标

2. Lambda 表达式

2.1 Lambda 定义

Lambda 表达式是JDK8中一个重要的新特性,lambda 表达式允许你通过表达式来代替功能接口(通过表达式实现业务功能)。
Lambda 表达式就和方法一样,它提供了一个正常的参数列表和一个使用这些参数的主体.
Lambda 表达式可以看作是一个匿名函数

2.2 为什么要用Lambda表达式

  1. 提供了更简单的语法和写代码的方式
  2. 取代匿名内部类
  3. 简化代码,干净整洁

2.3 Lambda 语法

基本语法:
(参数列表)-> (业务代码实现)
-> :被用于 (不可省略)

import java.util.Arrays;
import java.util.List;

public class LambdaTest {
    
    
    public static void main(String[] args) {
    
    
        List<String> List = Arrays.asList("MySQl", "liu");

        //传统
        for (String item : List) {
    
    
            System.out.println(item);
        }
        System.out.println();

        //lambda
        List.forEach((item)->{
    
    
            System.out.println(item);
        }) ;
         //简洁lambda
        List.forEach(item-> System.out.println(item));
    }
}

在这里插入图片描述

2.4 Lambda表达式和函数式接口

2.4.1 函数式接口定义:一个接口有且只有一个抽象方法

2.4.2 注意事项:

  1. 如果一个接口只有一个抽象方法,那么该接口就是一个函数式接口。
  2. 如果我们在某个接口上声明了 @FunctionalInterface 注解,那么编译器就会按照函数式接口的定义来要求该接口,这样如果有两个抽象方法,程序编译会报错。

2.4.3 函数式接口定义代码

@FunctionalInterface
 interface MyFuncationalInterface {
    
    
    void myMethod(Object agrs);


}

2.4.4 Lambda在集合中的使用

Map中的forEach
List排序
List查找

优点:

  1. 代码简洁,开发迅速
  2. 方便函数式编程
  3. 非常容易进行并行计算
  4. Java引入了Lambda,改善了集合操作
    缺点:
  5. 代码可读性变差
  6. 在非并行计算中,很多计算未必有传统的for性能要高
  7. 不容易进行调试

猜你喜欢

转载自blog.csdn.net/biteqq/article/details/123589568
今日推荐