if(!getCarsMap().get(car.getModel()).contains(car))
Es scheint, dass Sie nicht wünschen, zu Duplikate haben. Also statt einer Liste, müssen Sie eine Set verwenden, die keine doppelten Elemente hinzufügt, wie:
Map<String, Set<Car>> carmap = getCarsMap();
getBoatsMap().put(car.getModel(), tmpList) ;
Das macht keinen Sinn. Ein Auto in eine Karte zu legen, die Boote haben soll, ist verwirrend. Allerdings gehe ich davon aus, damit zu gehen.
So können wir haben:
Set<Cars> tempcar = new HashSet<>();
tempcar.add(car);
getBoatsMap().put(car.getModel(),tempcar);
public Car addCar(Car car)
Der Rückgabetyp addCar Methode. Eine Methode gibt das Objekt zurück, das sie bearbeitet. Hier wird die Karte manipuliert und nicht das Objekt. Es sollte etwas sein wie:
public Map<String,Set<Car>> addCar(Car car)
So können wir den folgenden Code haben:
public HashMap<String,Set<Car>> addCar(Car car){
Map<String, Set<Car>> carmap = getCarsMap();
if(carmap.containsKey(car.getModel())){
HashSet<Car> carset = carmap.get(car.getModel());
carset.add(car);
map.put(car.getModel(),carset);
}else{
carmap = getBoatsMap();
Set<Cars> tempcar = new HashSet<>();
tempcar.add(car);
carmap.put(car.getModel(),tempcar);
}
return carmap;
}
Dies kann die grundlegende Vorlage für Sie, sich zu bewegen. Dies kann jedoch auch weiter optimiert werden. Eine tiefere Untersuchung von Java Collections API und Java 8 kann Ihnen bessere Ideen liefern.
Denn removeCar() kann die Signatur der Methode sein:
public Car removeCar(Car)
UPDATE ich in Kommentar, dass getBoatsMap()
ein Fehler. So ist der Code:
public Map<String, Set<Car>> addCar(Car car){
Map<String, Set<Car>> carmap = getCarsMap();
if(carmap.containsKey(car.getModel())){
HashSet<Car> carset = carmap.get(car.getModel());
carset.add(car);
map.put(car.getModel(),carset);
}else{
Set<Cars> tempcar = new HashSet<>();
tempcar.add(car);
carmap.put(car.getModel(),tempcar);
}
return carmap;
}
Post, die auch hier in Frage http://codereview.stackexchange.com/ –
@ ΦXocę 웃 Пepeúpa ツ No. Nicht Crossposting vorschlagen. Btw: http://meta.codereview.stackexchange.com/questions/5777/a-guide-to-code-review-for-stack-overflow-users – Tom
'if (getCarsMap(). EntrySet(). Stream() .anyMatch (es -> es.getKey(). equals (car.getModel()))) Dies ist nur ein schlechterer Weg, 'getCarsMap() zu schreiben. containsKey (car.getModel())'. Warum verwenden Sie eine "Liste", wenn Sie keine Duplikate wollen? Und warum benutzt du 'getBoatsMap()' im 'else' Block? – Tom