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
Java Enum枚举 遍历判断 四种方式(包括 Lambda 表达式过滤)的更多相关文章
- java中Map遍历的四种方式
在java中所有的map都实现了Map接口,因此所有的Map(如HashMap, TreeMap, LinkedHashMap, Hashtable等)都可以用以下的方式去遍历. 方法一:在for循环 ...
- Map集合遍历的四种方式理解和简单使用-----不能for循环遍历
Map集合遍历的四种方式理解和简单使用 ~Map集合是键值对形式存储值的,所以遍历Map集合无非就是获取键和值,根据实际需求,进行获取键和值 1:无非就是通过map.keySet()获取到值,然后 ...
- Java中HashMap遍历的两种方式
Java中HashMap遍历的两种方式 转]Java中HashMap遍历的两种方式原文地址: http://www.javaweb.cc/language/java/032291.shtml 第一种: ...
- JAVA中集合输出的四种方式
在JAVA中Collection输出有四种方式,分别如下: 一) Iterator输出. 该方式适用于Collection的所有子类. public class Hello { public stat ...
- java读取XML文件的四种方式
java读取XML文件的四种方式 Xml代码 <?xml version="1.0" encoding="GB2312"?> <RESULT& ...
- map遍历的四种方式
原文 http://blog.csdn.net/dayanxuqun/article/details/26348277 以下是map遍历的四种方式: // 一.推荐只用value的时候用,都懂的... ...
- Java实现文件复制的四种方式
背景:有很多的Java初学者对于文件复制的操作总是搞不懂,下面我将用4中方式实现指定文件的复制. 实现方式一:使用FileInputStream/FileOutputStream字节流进行文件的复制操 ...
- Java中Map遍历的四种方案
在Java中如何遍历Map对象 方式一 这是最常见的并且在大多数情况下也是最可取的遍历方式.在键值都需要时使用. Map<Integer, Integer> map = new HashM ...
- Map集合遍历的四种方式理解和简单使用
~Map集合是键值对形式存储值的,所以遍历Map集合无非就是获取键和值,根据实际需求,进行获取键和值 1:无非就是通过map.keySet()获取到值,然后根据键获取到值 for(String s:m ...
随机推荐
- 浅析Java泛型
什么是泛型? 泛型是JDK 1.5的一项新特性,它的本质是参数化类型(Parameterized Type)的应用,也就是说所操作的数据类型被指定为一个参数,在用到的时候在指定具体的类型.这种参数类型 ...
- Java语言基础(2)
1 包的概念 把一个项目分割成几个模块,为每一个模块建立包,把该模块的.java文件统一放到对应包,通过包更好的管理.java文件,并且更好的分工合作.可以尽量避免出现.java文件重名现象. 包命名 ...
- 谈谈你对 mysql 引擎中的 MyISAM与InnoDB的区别理解?
InnoDB和MyISAM是许多人在使用MySQL时最常用的两个表类型,这两个表类型各有优劣,视具体应用而定.基本的差别为:MyISAM类型不支持事务处理等高级处理,而InnoDB类型支持.MyISA ...
- tensorflow以文件形式运行程序实例
在命令行中进入到代码所在文件夹 执行python mnist2.p或python aaa/mnist2.py这种形式
- JS 转化为String的三种方法
// 1. toString() var num = 8; var numString = num.toString(); console.log(numString); var result = t ...
- buuctf@reverse1
flag{hell0_w0rld}
- QT:设置布局边缘
QHBoxLayout * horizontalLayout = new QHBoxLayout; //setContentsMargins(int left, int top, int right, ...
- vue路由 routers的写法:require用与不用
vue路由的写法有很多种,这里我只说routers的写法,一种是compcomponent后面直接写路径,另一种是用require的方式,来看代码 import Vue from 'vue' impo ...
- Java 工程师成神之路
基础篇 → 什么是面向对象 面向对象.面向过程 是一种新兴的程序设计方法,或者是一种新的程序设计规范(paradigm),其基本思想是使用对象.类.继承.封装.多态等基本概念来进行程序设计.从现实世界 ...
- mysql 日期转换sql函数
mysql提供了两个函数: from_unixtime(time_stamp) -> 将时间戳转换为日期 unix_timestamp(date) -> 将 ...