我找到了一种向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]
规则:
如果我想要一辆车[ 2011,马自达,150],我将更换[ 2011,马自达, 120],以更新费用。
如果我想添加汽车[ 2011 ,雷诺, 120 ],我想更换[ 2011 , "马自达", 120 ]。
如果不符合品牌,我想增加年份和费用。
所以,我想要一种与某些属性匹配的有效方法,并使用此规则添加对象。
有人,有什么想法吗?
答案 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
列表的详情