1

假设您有一个 Sunglasses 对象列表,其中有...

  1. 4个属性,颜色,形状,款式和品牌。
  2. 没有相同的;4个属性的组合总是不同的

检索它们的最快方法是什么?

我认为:

  1. 覆盖 Sunglasses 类中的 hashcode() 方法(应该是唯一的,因为它们都不相同)。
  2. 然后以每个对象的hashcode为key,对象本身为value,放入一个Hashmap

假设我确切地记得我想要得到的玻璃杯的颜色形状、款式和品牌,

  1. 我将它们与我实现的哈希码方法一起应用。
  2. 然后从哈希图中获取它,这应该给我时间 O(1) 检索。

问题是如果我只知道颜色怎么办。如何获得所有具有相同颜色的眼镜的列表?

4

2 回答 2

0

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

该映射本质上是作为属性索引的服务器。Color

每当您从其他数据结构中添加或删除眼镜时,请确保也更新此颜色索引。

于 2012-06-03T02:55:33.493 回答
0
  1. 创建一个值类来保存 4 个属性,并创建使用所有字段的 hashcode 和 equals 方法。
  2. 将类用作太阳镜的字段,而不是使用单独的字段(这样,如果您将其更改为添加另一个字段,它会随处更改)
  3. 使用值类的哈希图 --> 太阳镜,并在查询时在使用 map.get(value) 处构建一个值对象
于 2012-06-03T05:04:38.317 回答