Ich habe eine abstrakte Klasse 'Entity' und Objekte (die 'Entity' erweitern), die verschiedene Schnittstellen implementieren. Ich habe auch eine ArrayList, die all diese verschiedenen Objekte enthalten.Mehrere Listen oder Liste und getSublist() (Java)
Nun, wenn ich brauche Zugriff auf alle Unternehmen, die eine bestimmte Schnittstelle (verwenden seine Methoden) implementieren, verwende ich die folgende Methode (die eine gefilterte Liste von ‚Entitäten‘ zurückgibt, die Schnittstelle ‚IDirectFire‘ implementieren):
public ArrayList<IDirectFire> getDirectFireSublist() {//direct fire sublist
ArrayList<IDirectFire> sublist = new ArrayList();
entities.stream().filter((it) -> (it instanceof IDirectFire)).forEach((it) -> {
sublist.add((IDirectFire) it);
});
return sublist;
}
Jetzt zu meiner Frage: Sollte ich weiter mit dieser Methode arbeiten oder sollte ich eine neue ArrayList erstellen, die neben 'Entitäten' existiert und die ich jedes Mal manuell aktualisieren müsste, wenn 'Entitäten' geändert werden?
Ich muss 'Entitäten' viel aktualisieren, so dass ich nicht sicher bin, ob es effizienter ist, mehrere Unterlisten zu speichern und sie jedes Mal zu aktualisieren, wenn Entitäten geändert werden oder wenn ich weiterhin Methoden zum Filtern von 'Entitäten' und Wenden Sie Methoden auf diese Unterlisten an. Denken Sie daran, dass diese Unterlisten auch in anderen Methoden in einer Schleife verwendet werden würden, z. B.
Ist das machbar? Vielen Dank im Voraus!
Im Allgemeinen sollte man versuchen zu entwerfen, um die Verwendung von 'instanceof' zu vermeiden, wo es möglich ist, da es als ein" Design-Geruch "gilt – wakjah