Wie bewahren Sie enum auf anzeigen, die mit Java 8 stream API
Ich habe eine enum
mit anderen enum
als parameter
public enum MyEntity{
Entity1(EntityType.type1,
....
MyEntity(EntityType type){
this.entityType = entityType;
}
}
Ich möchte eine Methode erstellen, die Rückkehr der enum
vom Typ
public MyEntity getEntityTypeInfo(EntityType entityType) {
return lookup.get(entityType);
}
normalerweise hätte ich geschrieben
private static final Map<EntityType, EntityTypeInfo> lookup = new HashMap<>();
static {
for (MyEntity d : MyEntity.values()){
lookup.put(d.getEntityType(), d);
}
}
Was ist die beste Praxis schreiben Sie ein java-stream???
- Ist dein enum genannt
EntityTypeInfo
oderMyEntity
?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich denke, es gibt einige Tippfehler in deinem code (die Methode muss statisch sein, meiner Meinung nach, dein Konstruktor ist dabei eine no-op im moment), aber wenn ich mich nach Ihnen, können Sie einen stream erstellen, der aus dem array des enums und verwenden Sie die
toMap
Sammler, Zuordnung der einzelnen enum mit seinenEntityType
für die Tasten und die Zuordnung der Instanz selbst als Wert:Den
toMap
collector übernimmt keine Garantie über die map-Implementierung zurück (obwohl es zurzeit eineHashMap
), aber Sie können immer die überlastet Variante, wenn Sie mehr Kontrolle benötigen, bietet eine Wurf-Fusion als parameter.Könnten Sie auch ein weiterer trick ist, mit einer statischen Klasse, und füllen Sie die Karte in den Konstruktor.
Function.identity()
statte -> e
alsFunction.identity()
gibt immer die gleiche Funktion.Function.identity()
implementiertreturn t -> t;
.e -> e
wirklich explizite und kürzer, aber jeder hat seine eigene Vorliebe ;-).Stream.of()
ist schöner alsArrays.stream()
🙂