Java Enum枚举 遍历判断 四种方式(包括 Lambda 表达式过滤)

Java Enum枚举 遍历判断 四种方式(包括 Lambda 表达式过滤)

示例代码如下:

package com.miracle.luna.lambda;

import java.util.Arrays;

/**

* @Author Miracle Luna

* @Date 2019/6/9 23:40

* @Version 1.0

*/

public enum AlarmGrade {

ATTENTION("attention", "提示"),

WARNING("warning","警告"),

SERIOUS("serious", "严重"),

FAULT("fault", "故障"),

UNKNOWN("unknown", "未知");

private String key;

private String name;

/**

* @param key

* @param name

*/

AlarmGrade(String key, String name) {

this.key = key;

this.name = name;

}

/**

* @return Returns the key.

*/

public String getKey() {

return key;

}

/**

* @return Returns the name.

*/

public String getName() {

return name;

}

/**

* 根据Key得到枚举的Value

* 普通for循环遍历,比较判断

*

* @param key

* @return

*/

public static AlarmGrade getEnumType(String key) {

AlarmGrade[] alarmGrades = AlarmGrade.values();

for (int i = 0; i < alarmGrades.length; i++) {

if (alarmGrades[i].getKey().equals(key)) {

return alarmGrades[i];

}

}

return AlarmGrade.UNKNOWN;

}

/**

* 根据Key得到枚举的Value

* 增强for循环遍历,比较判断

*

* @param key

* @return

*/

public static AlarmGrade getEnumType1(String key) {

AlarmGrade[] alarmGrades = AlarmGrade.values();

for (AlarmGrade alarmGrade : alarmGrades) {

if (alarmGrade.getKey().equals(key)) {

return alarmGrade;

}

}

return AlarmGrade.UNKNOWN;

}

/**

* 根据Key得到枚举的Value

* Lambda表达式,比较判断(JDK 1.8)

*

* @param key

* @return

*/

public static AlarmGrade getEnumType2(String key) {

AlarmGrade[] alarmGrades = AlarmGrade.values();

AlarmGrade result = Arrays.asList(alarmGrades).stream()

.filter(alarmGrade -> alarmGrade.getKey().equals(key))

.findFirst().orElse(AlarmGrade.UNKNOWN);

return result;

}

/**

* 根据Key得到枚举的Value

* Lambda表达式,比较判断(JDK 1.8)

*

* @param key

* @return

*/

public static AlarmGrade getEnumType3(String key) {

return Arrays.asList(AlarmGrade.values()).stream()

.filter(alarmGrade -> alarmGrade.getKey().equals(key))

.findFirst().orElse(AlarmGrade.UNKNOWN);

}

public static void main(String[] args) {

String grade = "attention";

System.out.println("第一种方式:普通for循环遍历,比较判断 \n" + grade + ": " + AlarmGrade.getEnumType(grade).getName());

System.out.println("\n第二种方式:增强for循环遍历,比较判断 \n" + grade + ": " + AlarmGrade.getEnumType1(grade).getName());

System.out.println("\n第三种方式:Lambda表达式,比较判断 \n" + grade + ": " + AlarmGrade.getEnumType2(grade).getName());

System.out.println("\n第四种方式:Lambda表达式,比较判断 \n" + grade + ": " + AlarmGrade.getEnumType3(grade).getName());

}

}

运行结果如下:

第一种方式:普通for循环遍历,比较判断

attention: 提示

第二种方式:增强for循环遍历,比较判断

attention: 提示

第三种方式:Lambda表达式,比较判断

attention: 提示

第四种方式:Lambda表达式,比较判断

attention: 提示

PS:

总结,参考如下:

Enum枚举 遍历判断 四种方式(包括 Lambda 表达式过滤)https://www.cnblogs.com/miracle-luna/p/10995539.html

Array数组 遍历 四种方式(包含 Lambda 表达式遍历)https://www.cnblogs.com/miracle-luna/p/10995469.html

List集合 遍历 四种方式(包含 Lambda 表达式遍历)https://www.cnblogs.com/miracle-luna/p/10995400.html

Map集合 遍历 五种方式(包含 Lambda 表达式遍历)https://www.cnblogs.com/miracle-luna/p/10995132.html

相关推荐

‎嘟嘟十三张 App
bet体育365官网安全吗

‎嘟嘟十三张 App

📅 01-05 👀 2553
前置摄像头清晰度天花板?3000元档自拍旗舰对比
bet体育365官网安全吗

前置摄像头清晰度天花板?3000元档自拍旗舰对比

📅 07-17 👀 9800
解读95年是什么命,木猪命的性格特点及运势
365bet体育滚球

解读95年是什么命,木猪命的性格特点及运势

📅 08-13 👀 4290