Java.util.flux.Collecteurs avec flux EnumSet

j'essaie d'utiliser à la place de bitmask ci-dessous le code

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

je voudrais retourner EnumSet au lieu d'un ensemble simple(ne veut pas perdre sur L'utilité D'EnumSet juste à cause de casting).

besoin de quelques indications sur la façon de créer un collecteur personnalisé pour collecter des EnumSet.

25
demandé sur Somasundaram Sekar 2016-02-03 16:23:41
la source

1 ответов

Vous pouvez utiliser toCollection(Supplier):

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

toCollection méthode reçoit un lambda qui devrait créer un regroupement vide pour stocker le résultat. Ici, nous créons vide EnumSet en utilisant EnumSet.noneOf appel. Notez que pour EnumSet vous devez toujours spécifier (implicitement ou explicitement) qui enum est cet ensemble pour.

48
répondu Tagir Valeev 2016-02-03 17:33:09
la source

Autres questions sur