示例代码如下:

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

Java Enum枚举 遍历判断 四种方式(包括 Lambda 表达式过滤)的更多相关文章

  1. java中Map遍历的四种方式

    在java中所有的map都实现了Map接口,因此所有的Map(如HashMap, TreeMap, LinkedHashMap, Hashtable等)都可以用以下的方式去遍历. 方法一:在for循环 ...

  2. Map集合遍历的四种方式理解和简单使用-----不能for循环遍历

    Map集合遍历的四种方式理解和简单使用   ~Map集合是键值对形式存储值的,所以遍历Map集合无非就是获取键和值,根据实际需求,进行获取键和值 1:无非就是通过map.keySet()获取到值,然后 ...

  3. Java中HashMap遍历的两种方式

    Java中HashMap遍历的两种方式 转]Java中HashMap遍历的两种方式原文地址: http://www.javaweb.cc/language/java/032291.shtml 第一种: ...

  4. JAVA中集合输出的四种方式

    在JAVA中Collection输出有四种方式,分别如下: 一) Iterator输出. 该方式适用于Collection的所有子类. public class Hello { public stat ...

  5. java读取XML文件的四种方式

    java读取XML文件的四种方式 Xml代码 <?xml version="1.0" encoding="GB2312"?> <RESULT& ...

  6. map遍历的四种方式

    原文 http://blog.csdn.net/dayanxuqun/article/details/26348277 以下是map遍历的四种方式: // 一.推荐只用value的时候用,都懂的... ...

  7. Java实现文件复制的四种方式

    背景:有很多的Java初学者对于文件复制的操作总是搞不懂,下面我将用4中方式实现指定文件的复制. 实现方式一:使用FileInputStream/FileOutputStream字节流进行文件的复制操 ...

  8. Java中Map遍历的四种方案

    在Java中如何遍历Map对象 方式一 这是最常见的并且在大多数情况下也是最可取的遍历方式.在键值都需要时使用. Map<Integer, Integer> map = new HashM ...

  9. Map集合遍历的四种方式理解和简单使用

    ~Map集合是键值对形式存储值的,所以遍历Map集合无非就是获取键和值,根据实际需求,进行获取键和值 1:无非就是通过map.keySet()获取到值,然后根据键获取到值 for(String s:m ...

随机推荐

  1. label smooth

    图像分类的一个trick,推导可参考这位博主https://leimao.github.io/blog/Label-Smoothing/ 知乎上的讨论https://www.zhihu.com/que ...

  2. 【HDU6635】Nonsense Time

    题目大意:给定一个长度为 N 的序列,开始时所有的位置都不可用,每经过一个时间单位,都会有一个位置被激活.现给定激活顺序的序列,求每次激活之后全局的最长上升子序列的长度,保证数据随机. 题解: 引理: ...

  3. 基于django中settings中间件源码思想,实现功能的插拔式设计

    这里我们用到一个非常重要的模块,importlib,利用它可以实现字符串转python代码,再利用反射进行操作,这样就可以实现插拔式设计. 一.我们先做个初级的,把所有文件放到初级思想文件夹下: 1. ...

  4. jsp九大内置对象及四个作用域【转】

    1.Request对象 该对象封装了用户提交的信息,通过调用该对象相应的方法可以获取封装的信息,即使用该对象可以 获取用户提交的信息. 当Request对象获取客户提交的汉字字符时,会出现乱码问题,必 ...

  5. 吴恩达+neural-networks-deep-learning+第二周作业

    Logistic Regression with a Neural Network mindset v4 简单用logistic实现了猫的识别,logistic可以被看做一个简单的神经网络结构,下面是 ...

  6. 【leetcode】1248. Count Number of Nice Subarrays

    题目如下: Given an array of integers nums and an integer k. A subarray is called nice if there are k odd ...

  7. 【leetcode】Trips and Users

    The Trips table holds all taxi trips. Each trip has a unique Id, while Client_Id and Driver_Id are b ...

  8. redis string类型设置过期时间后 再进行set操作,会清除过期时间

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明.本文链接:https://blog.csdn.net/qq_41756437/article/d ...

  9. install oh my zsh on ubuntu 16.04

    first,install zsh #安装zsh sudo apt-get install zsh #是否安装成功 cat /etc/shells #/bin/sh #/bin/bash #/bin/ ...

  10. BZOJ 4386 Luogu P3597 [POI2015]Wycieczki (矩阵乘法)

    题目链接: (bzoj) https://www.lydsy.com/JudgeOnline/problem.php?id=4386 (luogu) https://www.luogu.org/pro ...