示例代碼以下:html
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()); } }
運行結果以下:java
第一種方式:普通for循環遍歷,比較判斷 attention: 提示 第二種方式:加強for循環遍歷,比較判斷 attention: 提示 第三種方式:Lambda表達式,比較判斷 attention: 提示 第四種方式:Lambda表達式,比較判斷 attention: 提示
PS:數組
總結,參考以下:this
Enum枚舉 遍歷判斷 四種方式(包括 Lambda 表達式過濾)
https://www.cnblogs.com/miracle-luna/p/10995539.htmlspa
Array數組 遍歷 四種方式(包含 Lambda 表達式遍歷)
https://www.cnblogs.com/miracle-luna/p/10995469.htmlcode
List集合 遍歷 四種方式(包含 Lambda 表達式遍歷)
https://www.cnblogs.com/miracle-luna/p/10995400.htmlhtm
Map集合 遍歷 五種方式(包含 Lambda 表達式遍歷)
https://www.cnblogs.com/miracle-luna/p/10995132.htmlblog