添加/删除对象的有效方法[多个属性]

时间:2015-01-15 11:43:54

标签: java performance list

我找到了一种向List添加带有一些规则的对象的有效方法。 例如,我有这个对象

Car [int year, String brand, int cost]

我有一个带有此值的List的成像:

[2011, "Renault", 100]
[2011, "Mazda", 120]
[2011, "Ferrari", 150]    

[2011, "Mazda", 100]
[2011, "Ferrari", 130]
[2011, "Renault", 200]

规则:

  1. 如果我想要一辆车[ 2011,马自达,150],我将更换[ 2011,马自达, 120],以更新费用。

  2. 如果我想添加汽车[ 2011 ,雷诺, 120 ],我想更换[ 2011 , "马自达", 120 ]。

  3. 如果不符合品牌,我想增加年份和费用。

  4. 所以,我想要一种与某些属性匹配的有效方法,并使用此规则添加对象。

    有人,有什么想法吗?

3 个答案:

答案 0 :(得分:2)

这很难实现。您可以使用密钥[year, cost][year, model]保留几张地图。给出相应对象的列表索引作为map的值。

每次添加对象时,都会选择两个属性,从中创建密钥,并检查它是否存在于地图中。如果是,请替换相应的对象,如果没有添加条目。

虽然暴力方法需要O(n)次读取和一次写入才能添加新条目,但这种方法将其归结为两次读取和两次写入(如果发生命中)和两次读取以及三次写入以防错过。

答案 1 :(得分:0)

使用地图存储键值对。键可以是年份+模型的组合,值可以只是成本或整个Car对象。

答案 2 :(得分:0)

嗯,如果我理解正确的话,你想潜入List。他们非常直接:

List<Car> carList = new ArrayList<Car>();
Car mazda = new Car(2011, "Mazda", 150);
carList.add(mazda);

要拆车:

Car mazda = new Car(2011, "Mazda", 150);
carList.add(mazda);
carList.remove(mazda); // no more mazda...

有关Java API

列表的详情