ist, ich habe Enum:Iterieren Sie durch alle Objekte oder erstellen Sie eine Karte. Gibt es eine bessere Lösung
public enum Colour {
RED, BLUE, BLACK;
}
Und ich habe Car-Klasse:
public class Car {
private int id;
private Colour colour;
//other fields, getters and setters
}
Und ich habe eine Menge Autos in Map<Integer, Car> MAP_OF_CARS
. Und ich muss zum Beispiel alle Autos anzeigen, die rot sind. Also hier ist meine Frage, was ist die bessere Lösung. Durch alle Autos in der Karte Iterieren oder Karte erstellen, wo die Liste der Autos durch Farbe definiert wird?
Erste Lösung:
public List<Car> getCarsByColor(Colour colour) {
List<Car> sameColour = new ArrayList<>();
for (Car car : MAP_OF_CARS.values()) {
if(car.getColour().equals(colour) {
sameColour.add(car);
}
}
return sameColour;
}
Zweite Lösung: Während neues Auto-Objekt erstellen, ich habe es auf die Karte und in Folge hinzufügen will ich habe:
Map<Colour, List<Car>> CARS_BY_COLOURS;
CARS_BY_COLOURS.put(Colour.RED, car1);
Und statt für Schleife, Ich werde das tun:
public List<Car> getCarsByColor(Colour colour) {
return CARS_BY_COLOURS.get(colour);
}
Welche Lösung scheint professioneller zu sein?
In der Regel ist die Karte die einfachere Lösung, aber sie hängt von der Anzahl der Schlüssel und Ihren Leistungs- und Speicherbeschränkungen ab. Es gibt keine einzige richtige Antwort. – shmosel