查找对象的最快方法

时间:2012-06-03 00:12:09

标签: java algorithm software-design object-oriented-analysis object-oriented-database

假设您有一个太阳镜对象列表,其中有......

  1. 4个属性,颜色,形状,风格和品牌。
  2. 没有相同的; 4个属性的组合总是不同的
  3. 检索它们的最快方法是什么?

    我想:

    1. 覆盖Sunglasses类中的hashcode()方法(应该是唯一的,因为它们都不相同)。
    2. 然后使用每个对象的哈希码作为键,将对象本身作为值,将它们放入Hashmap中
    3. 假设我记得我想要的玻璃的颜色形状,样式和品牌 得到,

      1. 我使用我实现的哈希码方法应用它们。
      2. 然后从hashmap中获取它,这应该给我时间O(1)检索。
      3. 问题是如果我只知道颜色的话。如何获得所有具有相同颜色的眼镜列表?

2 个答案:

答案 0 :(得分:0)

除了您的其他数据结构外,还要构建HashMap<Color,Collection<Glasses>>

此地图实质上是Color属性上的索引

每当您从其他数据结构中添加或移除眼镜时,请务必同时更新此颜色索引。

答案 1 :(得分:0)

  1. 创建一个值类来保存4个属性,并创建hashcode和equals使用所有字段的方法。
  2. 使用该类作为太阳镜字段而不是具有单独的字段(如果您将其更改为添加另一个字段,则会随处更改)
  3. 使用值类的哈希映射 - &gt;太阳镜和查询时,使用map.get(value)
  4. 构建一个值对象