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

原文地址:https://www.cnblogs.com/zhuyeshen/p/12677636.html

时间: 2024-12-15 02:47:11

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

map遍历的四种方式

原文 http://blog.csdn.net/dayanxuqun/article/details/26348277 以下是map遍历的四种方式: [java] view plaincopyprint? // 一.推荐只用value的时候用,都懂的... // Map.values()遍历所有的value,不遍历key for (String v : map.values()) { System.out.println("value= " + v); } [java] view pl

JAVA中集合输出的四种方式

在JAVA中Collection输出有四种方式,分别如下: 一) Iterator输出. 该方式适用于Collection的所有子类. public class Hello { public static void main(String[] args) throws Exception { Set<Person> javaProgramers = new HashSet<Person>(); javaProgramers.add(new Person("aaron&qu

java读取XML文件的四种方式

java读取XML文件的四种方式 Xml代码 <?xml version="1.0" encoding="GB2312"?> <RESULT> <VALUE> <NO>A1234</NO> <ADDR>河南省郑州市</ADDR> </VALUE> <VALUE> <NO>B1234</NO> <ADDR>河南省郑州市二七区&

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

背景:有很多的Java初学者对于文件复制的操作总是搞不懂,下面我将用4中方式实现指定文件的复制. 实现方式一:使用FileInputStream/FileOutputStream字节流进行文件的复制操作 1 private static void streamCopyFile(File srcFile, File desFile) throws IOException { 2 // 使用字节流进行文件复制 3 FileInputStream fi = new FileInputStream(sr

Java中获取配置文件的四种方式

一,类加载器classLoader 二,getResourcesAsStream方法 三,Properties对象 四,ResouceBundle对象 五,四种方式代码演示 public class LoadProperties { public static void main(String[] args) throws Exception, IOException { //方式一,在项目同级目录下 /*Properties p = new Properties(); p.load(new F

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

~Map集合是键值对形式存储值的,所以遍历Map集合无非就是获取键和值,根据实际需求,进行获取键和值 1:无非就是通过map.keySet()获取到值,然后根据键获取到值 for(String s:map.keySet()){            System.out.println("key : "+s+" value : "+map.get(s));     } 2:通过Map.Entry(String,String) 获取,然后使用entry.getKey(

遍历的四种方式

简单的写一下四种常见的遍历方式:public class Collection02{    public static void main(String[] args){        //1 创建集合        Collection c = new ArrayList();        Collection link = new LinkedList(); //2 添加元素        c.add(100);        c.add("");        c.add(3.

Java中HashMap遍历的两种方式

第一种: Map map = new HashMap(); Iterator iter = map.entrySet().iterator(); while (iter.hasNext()) { Map.Entry entry = (Map.Entry) iter.next(); Object key = entry.getKey(); Object val = entry.getValue(); } 效率高,以后一定要使用此种方式! 第二种: Map map = new HashMap();

JAVA中实现多线程的四种方式

Java中多线程实现方式主要有四种:1<继承Thread类.2<实现Runnable接口.3<实现Callable接口通过FutureTask包装器来创建Thread线程.4<使用ExecutorService.Callable.Future实现有返回结果的多线程. 其中前两种方式线程执行完后都没有返回值,后两种是带返回值的. 1.继承Thread类创建线程 Thread类本质上是实现了Runnable接口的一个实例,代表一个线程的实例.启动线程的唯一方法就是通过Thread类的s