zoukankan      html  css  js  c++  java
  • 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循环遍历,比较判断 
    " + grade + ": " + AlarmGrade.getEnumType(grade).getName());
            System.out.println("
    第二种方式:增强for循环遍历,比较判断 
    " + grade + ": " + AlarmGrade.getEnumType1(grade).getName());
            System.out.println("
    第三种方式:Lambda表达式,比较判断 
    " + grade + ": " + AlarmGrade.getEnumType2(grade).getName());
            System.out.println("
    第四种方式:Lambda表达式,比较判断 
    " + 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

  • 相关阅读:
    浅谈数据的离散化
    【ZOJ】3785 What day is that day? ——浅谈KMP在ACM竞赛中的暴力打表找规律中的应用
    【Python】iichats —— 命令行下的局域网聊天程序
    【Python】iiblogs ——命令行下的网页收藏夹
    【Python】iiacm_filemaker ——简易的.cpp文件创建即初始化脚本,ACMer专用
    【黑科技】读写优化
    【POJ】1330 Nearest Common Ancestors ——最近公共祖先(LCA)
    【HDU】1717 小数化分数2 ——计数原理
    【POJ】2318 TOYS ——计算几何+二分
    【HDU】4923 Room and Moor(2014多校第六场1003)
  • 原文地址:https://www.cnblogs.com/miracle-luna/p/10995539.html
Copyright © 2011-2022 走看看