有什么办法基于计数器来创建数组列表吗? Java / Android

时间:2019-03-22 11:30:18

标签: java android

    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的建议解决。

3 个答案:

答案 0 :(得分:2)

在您的getCarList类中添加一个Dealership,以返回列表的引用。 您可以使用该引用来使用列表方法getremove

在您的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());
    })