Enumeración de Java: busque la enumeración correspondiente por valor

Vídeo del curso de subprogramas de pedidos de Python WeChat

https://edu.csdn.net/course/detail/36074

Sistema práctico de gestión financiera de comercio cuantitativo Python

https://edu.csdn.net/course/detail/35475

1. Antecedentes

La enumeración de Java es una clase especial que generalmente representa un conjunto de constantes, como las 4 estaciones de un año, los 12 meses de un año, los 7 días de una semana, las direcciones del sureste, noroeste, etc.

En trabajos recientes, me conecté con muchos otros sistemas y descubrí que el mismo sistema que conecté tiene diferentes entornos (desarrollo, pruebas, entorno formal), y la información de configuración de cada entorno generalmente no se modifica, por lo que descubrí que se utilizan enumeraciones. Para la configuración. El elemento es relativamente simple de usar. Diferentes configuraciones de entorno solo necesitan definir un valor de enumeración más.

El uso de enumeraciones implica devolver la enumeración correspondiente a través del valor pasado.

2. A través de un valor, la consulta devuelve la enumeración correspondiente (código de muestra)

2.1 Clase de enumeración
@Getter
public enum CustomType {
    TEST("test","测试","111"),
    DEV("dev","开发","222");

    String typeCode;
    String typeName;
    String orgId;

    CustomType(String typeCode, String typeName, String orgId) {
        this.typeCode = typeCode;
        this.typeName = typeName;
        this.orgId = orgId;
    }
}

2.2 Métodos de enumeración de uso común: métodos value(), ordinal() y valueOf()

La clase de enumeración definida por enum hereda la clase java.lang.Enum de forma predeterminada e implementa las dos interfaces java.lang.Seriablizable y java.lang.Comparable.

Los métodos value(), ordinal() y valueOf() se encuentran en la clase java.lang.Enum:

  • value() devuelve todos los valores de la clase de enumeración.
  • El método ordinal() puede encontrar el índice de cada constante de enumeración, como un índice de matriz.
  • El método valueOf() devuelve una constante de enumeración del valor de cadena especificado.

Para consultar una enumeración pasando valores, devuelva todas las enumeraciones a través del método valores () y luego recorra todas las enumeraciones. Siempre que el valor del parámetro pasado sea el mismo que el valor de la enumeración actual, se devolverá la enumeración actual. ;

2.3 Devuelve la enumeración correspondiente pasando uno o más valores.
    public CustomType find(String typeCode){
        for (CustomType value : CustomType.values()) {
            if(typeCode.equals(value.getTypeCode())){
                return value;
            }
        }
        //根据自身的业务 查不到可以返回null,或者抛出异常。
        return null;
    }

    public CustomType find(String orgId,String typeCode){
        if(orgId == null || typeCode == null){
            return null;
        }

        for (CustomType value : CustomType.values()) {
            if(orgId.equals(value.getOrgId()) &&
                    typeCode.equals(value.getTypeCode())){
                return value;
            }
        }
        //根据自身的业务 查不到可以返回null,或者抛出异常。
        return null;
    }

3. Optimización de búsqueda

Cada vez que se utiliza el método de valores () para recorrer la búsqueda, la complejidad temporal es O (n), mientras que la complejidad temporal de la búsqueda HashMap es O (1).

Aunque el número de enumeraciones no suele ser muy grande, cada búsqueda transversal a través del método de valores () también es muy rápida. El uso de HashMap consumirá un poco más de memoria, pero considerando esto, la complejidad temporal de la memoria se puede reducir de O (n) a O (1), lo cual es rentable y aún puede dedicar tiempo a optimizar el código. .

    private static Map<String,CustomType> orgCustomType = new HashMap<>();
    static {
        for (CustomType value : CustomType.values()) {
            orgCustomType.put(value.getOrgId(),value);
        }
    }

    public CustomType find(String orgId){
        return orgCustomType.get(orgId);
    }

Supongo que te gusta

Origin blog.csdn.net/pythonxxoo/article/details/122757988
Recomendado
Clasificación