1.代码如下
package com.example.web.enums;
import java.util.HashMap;
import java.util.Map;
public enum WeekEnum {
MON(1, "星期一"),
TUE(2, "星期二"),
WEN(3, "星期三"),
THR(4, "星期四"),
FRI(5, "星期五"),
STR(6, "星期六"),
SUN(7, "星期七"),
;
private static final Map<Integer, WeekEnum> map;
static {
map = new HashMap<>(WeekEnum.values().length);
for(WeekEnum weekEnum : WeekEnum.values()){
map.put(weekEnum.code, weekEnum);
}
}
private int code;
private String desc;
WeekEnum(int code, String desc){
this.code = code;
this.desc = desc;
}
/**
* 第一种方法是每次都要遍历
* @param code
* @return
*/
public static String getDescFirstMethod(int code){
for(WeekEnum weekEnum : WeekEnum.values()){
if(weekEnum.code == code){
return weekEnum.desc;
}
}
return null;
}
/**
* 第二种方法是在类加载的时候就put到Map了,大大提高了效率。
* @param code
* @return
*/
public static String getDescSecondMethod(int code){
WeekEnum weekEnum = map.get(code);
if(null == weekEnum){
return null;
}
return weekEnum.desc;
}
public static void main(String[] args) {
int code = 1;
long firstTime = System.nanoTime();
System.out.println(getDescFirstMethod(code));
long secondTime = System.nanoTime();
System.out.println("firstTime:" + (secondTime - firstTime));
System.out.println(getDescSecondMethod(code));
long thirdTime = System.nanoTime();
System.out.println("secondTime:" + (thirdTime - secondTime));
}
}
2.控制台打印结果
星期一
firstTime:286600
星期一
secondTime:103900