values enum java java-8 java-stream enumset

java - values - iterate enum c#



java.util.stream.Collectors con EnumSet Stream (1)

Estoy tratando de usar en lugar de la máscara de bits a continuación es el código

public static Set<Amenities> fromBitFlags(int bitFlag) { return ALL_OPTS.stream().filter(a -> (a.ameityId & bitFlag) > 0).collect(Collectors.toSet()); }

Me gustaría devolver EnumSet en lugar de un conjunto sencillo (no quiero perder la utilidad de EnumSet solo por el lanzamiento).

Necesita algunas instrucciones sobre cómo crear un colector personalizado para recopilar EnumSet.


Puede utilizar toCollection(Supplier) :

return ALL_OPTS.stream().filter(a -> (a.ameityId & bitFlag) > 0) .collect(Collectors.toCollection(() -> EnumSet.noneOf(Amenities.class)));

El método toCollection recibe un lambda que debe crear una colección vacía para almacenar el resultado. Aquí creamos EnumSet vacío utilizando EnumSet.noneOf call. Tenga en cuenta que para EnumSet siempre debe especificar (implícita o explícitamente) para qué enumeración se establece este conjunto.