package com.bestsch.classicalchinese.enums; import lombok.Data; import java.util.ArrayList; import java.util.EnumSet; import java.util.List; import java.util.Map; import java.util.stream.Collectors; public enum Subject { YW(40,"语文","SUB01"), SX(41,"数学","SUB02"), YY(42,"英语","SUB03"), WL(74,"物理","SUB04"), HX(75,"化学","SUB05"), SW(76,"生物","SUB06"), XX(111,"信息","SUB7"), PD(112,"道法","SUB8"), TY(113,"体育","SUB9"), MS(114,"美术","SUB10"), KX(115,"科学","SUB11"), LJ(116,"劳技","SUB12"), LS(117,"历史","SUB13"), DL(118,"地理","SUB14"), ZZ(119,"政治","SUB15"); private int id; private String name; private String code; Subject(int id, String name, String code) { this.id = id; this.name = name; this.code = code; } public int getId() { return id; } public String getName() { return name; } public String getCode() { return code; } public static Subject getByCode(String code) { return codeMap.get(code); } private static List list; private static Map codeMap; public static List list() { if (list != null) return list; EnumSet statusSet = EnumSet.allOf(Subject.class); list = new ArrayList<>(statusSet); codeMap = list.stream().collect(Collectors.toMap(Subject::getCode, Subject -> Subject)); return list; } static { list(); } @Data public static class Dto { private int id; private String name; private String code; } public Dto toDto() { Dto dto = new Dto(); dto.setId(id); dto.setName(name); dto.setCode(code); return dto; } private static List dtoList; public static List dtoList() { if (dtoList != null) return dtoList; List dtoList = new ArrayList<>(); for (Subject subject: list()) dtoList.add(subject.toDto()); return dtoList; } }