一、代码实现
枚举类BankEnum.java:
package com.xj.enums;
import java.util.Arrays;
import java.util.Iterator;
/**
* @Author : xjfu
* @Date : 2022/8/23 17:36
* @Description : 枚举类的查找(稍微改造一下就成了枚举遍历)
*/
public enum BankEnum {
ICBC("ICBC", "工商银行"),
CCB("CCB", "建设银行"),
BOC("BOC", "中国银行"),
ABC("ABC", "农业银行"),
BCOM("BCOM", "交通银行"),
CMB("CMB", "招商银行");
private String code;
private String desc;
BankEnum(String code, String desc){
this.code = code;
this.desc = desc;
}
/**get 或 set方法**/
public String getCode() {
return code;
}
public void setCode(String code) {
this.code = code;
}
public String getDesc() {
return desc;
}
public void setDesc(String desc) {
this.desc = desc;
}
/**
* 方法一 for each:根据code获得对应的BankEnum
* @param code
* @return
*/
public static BankEnum getEnumByForEach(String code){
BankEnum[] enums = BankEnum.values();
for(BankEnum e : enums){
if(e.getCode().equals(code)){
return e;
}
}
return null;
}
/**
* 方法二 迭代器:根据code获得对应的BankEnum
* @param code
* @return
*/
public static BankEnum getEnumByIterator(String code){
Iterator<BankEnum> iterator = Arrays.stream(BankEnum.values()).iterator();
while(iterator.hasNext()){
BankEnum e = iterator.next();
if(e.getCode().equals(code)){
return e;
}
}
return null;
}
/**
* 方法三 Lambda:根据code获得对应的BankEnum 因为Lambda是Java 8才有的新特性,固只能在Java 8及以上版本使用
* @param code
* @return
*/
public static BankEnum getEnumByLambda(String code){
return Arrays.stream(BankEnum.values()).filter(e -> e.getCode().equals(code)).findFirst().orElse(null);
}
}
测试类EnumTest.java:
package com.xj.enums;
/**
* @Author : xjfu
* @Date : 2022/8/23 17:53
* @Description : 测试类
*/
public class EnumTest {
public static void main(String[] args) {
//调用方法一
System.out.println(BankEnum.getEnumByForEach("ICBC").getDesc());
//调用方法二
System.out.println(BankEnum.getEnumByIterator("ICBC").getDesc());
//调用方法三
System.out.println(BankEnum.getEnumByLambda("ICBC").getDesc());
}
}
运行结果: