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

p8h8hvxi  于 2021-06-30  发布在  Java
关注(0)|答案(3)|浏览(350)

关闭。这个问题需要更加突出重点。它目前不接受答案。
**想改进这个问题吗?**通过编辑这篇文章更新这个问题,使它只关注一个问题。

5年前关门了。
改进这个问题
我正在寻找一种有效的方法,将具有一些规则的对象添加到列表中。例如,我有一个对象

Car [int year, String brand, int cost]

想象一下我有一个包含以下值的列表:

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

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

规则:
如果我想要一辆车[2011,马自达,150],我会更换[2011,马自达,120],更新成本。
如果我想用car[2011,renault,120]添加一辆车,我想替换[2011,“mazda”,120]。
如果没有匹配的品牌,我想增加年和成本。
所以,我需要一种有效的方法来匹配一些属性,并用这个规则添加对象。
有人知道吗?

dsekswqp

dsekswqp1#

嗯,如果我没听错的话,你想潜入 List s。他们很直截了当:

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...

有关JavaAPI列表的详细信息

8xiog9wr

8xiog9wr2#

使用Map存储键值对。关键可以是年份+车型的组合,价值可以只是成本或整车对象。

67up9zun

67up9zun3#

这是很难实现的琐碎。你可以留几张带钥匙的Map [year, cost] 以及 [year, model] . 给出对应对象的列表索引作为map的值。
每次添加一个对象时,都会选取两个属性,从中生成关键点,并检查它是否存在于Map中。如果是,则替换相应的对象,如果不是,则添加条目。
而暴力手段需要 O(n) 读一写—添加新条目,这种方法在命中的情况下减少到两读两写,在未命中的情况下减少到两读三写。

相关问题