java枚举类转list

Java 枚举类转换为 List 实践
本文详细介绍了如何在 Java 中将枚举类转换为 List 集合,包括使用 Stream API 和传统方法,同时探讨了枚举在Java中的应用及其优势。
package com.jinx.it.common.enumm;

import cn.hutool.core.util.StrUtil;
import com.jinx.it.entity.jinxentity.enumeration.base.ICommEnum;
import lombok.extern.slf4j.Slf4j;

import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.util.*;

/**
 * 枚举的工具类
 *  不可使用的原因 该类啊
 **/
@Slf4j
public class EnumUtil {

    private EnumUtil() { }

    /**
     * 将枚举类装换为Map对象的List
     */
    public static <Enum> List<Map<String, Object>> convertEnumToList(Class<Enum> enumT) {
        Enum[] enumConstants = enumT.getEnumConstants();
        List<Map<String, Object>> results = new ArrayList<>();
        for (Enum e : enumConstants) {
            Map<String, Object> eMap = new HashMap<>();
            Class<?> eClass = e.getClass();
            try {
                Method[] methods = eClass.getMethods();
                for (Method method : methods) {
                    Str
Java中,可以通过枚举类的 `values()` 方法获取所有枚举实例,并结合 `Arrays.asList()` 方法将其换为 `List`。该方法能够将数组换为固定大小的 `List`,适用于需要将枚举值以集合形式操作的场景。 例如,定义一个表示星期的枚举类 `Weekday`: ```java public enum Weekday { MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY } ``` 可以通过以下方式将其所有枚举实例换为 `List`: ```java import java.util.Arrays; import java.util.List; public class EnumToListExample { public static void main(String[] args) { List<Weekday> weekdayList = Arrays.asList(Weekday.values()); System.out.println(weekdayList); } } ``` 该代码将输出: ``` [MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY] ``` 通过这种方式,可以方便地对枚举值进行集合操作,如遍历、过滤、换等。此外,如果枚举类包含自定义属性和方法,也可以使用类似的方式将其换为 `List`,并进一步处理每个枚举实例的属性[^1]。 ### 自定义枚举类换 若枚举类包含自定义属性和构造方法,例如: ```java public enum RuleTypeEnum { TYPE_A("A", "Type A Description"), TYPE_B("B", "Type B Description"); private final String code; private final String description; RuleTypeEnum(String code, String description) { this.code = code; this.description = description; } public String getCode() { return code; } public String getDescription() { return description; } } ``` 可以将其换为包含自定义属性的 `List`,例如换为 `List<Map<String, String>>` 或 `List<EnumEntity>`: ```java import java.util.ArrayList; import java.util.Arrays; import java.util.List; public class CustomEnumToList { public static void main(String[] args) { List<RuleTypeEnum> enumList = Arrays.asList(RuleTypeEnum.values()); List<EnumEntity> entityList = new ArrayList<>(); for (RuleTypeEnum ruleType : enumList) { entityList.add(new EnumEntity(ruleType.getCode(), ruleType.getDescription())); } System.out.println(entityList); } } class EnumEntity { private String code; private String description; public EnumEntity(String code, String description) { this.code = code; this.description = description; } // Getters and toString() } ``` 上述方法可以灵活地将枚举类的实例换为 `List`,并根据实际需求进行扩展和操作[^4]。 ### 获取枚举值的数量 如果需要获取枚举值的总数,可以通过 `values()` 方法获取数组后使用 `length` 属性: ```java int count = Weekday.values().length; System.out.println("枚举值的数量为: " + count); ``` 该代码将输出: ``` 枚举值的数量为: 7 ``` 这种方法适用于需要统计枚举值数量或进行索引操作的场景。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

superSubfn

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值