addDealership("BestWheels", "Deventer", arraylist1);
addDealership("HighDealerz", "Amsterdam", arraylist2);
addDealership("RoyalDealers", "Den Haag", arraylist3);
这是我最终需要做的。当用户按下“添加”按钮时,我需要添加一个新的经销店,该经销店内将放置汽车。我需要能够从阵列中添加/删除汽车,因此我需要一些方法来特别识别每辆汽车。
到目前为止,我的方法如下:
private static void addDealership(String name, String city, ArrayList<Car> carArrayList) {
dealerships.add(new Dealership(name, city, carArrayList));
carArrayCounter++;
}
我基本上想修改我的“ addDealership”方法,为每个经销商创建单独的数组列表,然后能够添加/删除元素。
必须使用Arraylist,因此虽然可以使用HashMap,但我不能真正使用它。
使用@ronginat的建议解决。
答案 0 :(得分:2)
在您的getCarList
类中添加一个Dealership
,以返回列表的引用。
您可以使用该引用来使用列表方法get
和remove
。
在您的public boolean equals(Object obj)
类中实施Car
。
您的IDEA可以帮助自动生成此方法。
然后,您就可以从经销商的carList中删除Car
。
carList.remove(carObject);
答案 1 :(得分:1)
您可以使用HashMap而不是ArrayList来访问您的方法。作为关键字,您可以使用例如名称(可以是其他名称,但必须唯一)。 HashMap的优点在于,它是为特定元素访问而设计的,与ArrayList不同。
HashMap<String, DealerShip> dealerShip = new HashMap<String, DealerShip>();
private static void addDealerShip(String name, String city, ArrayList<Car> carArrayList) {
dealerShip.put(name, new DealerShip(name, city, carArrayList);
}
private static DealerShip getDealerShip(String name) {
return dealerShip.get(name);
}
答案 2 :(得分:1)
使用Java 8.识别相关的Dealership
:
final List<Dealership> dealerships = /* initialise dealerships */
//Find a dealership by name
final Dealership foundByName = dealerships.stream()
.filter(dealership -> dealership.name().equals("Name Of Dealership"))
.findAny()
.orElse(null);
//Find a dealership by name and then update its list of cars
dealerships.stream()
.filter(dealership -> dealership.name().equals("Name Of Dealership"))
.findAny()
.map(Dealership::carArrayList)
.ifPresent(cars -> {
//Update list of cars for that dealership here. For example...
cars.add(new Car());
})