HashMap是一个合适的数据结构

时间:2012-09-02 20:25:36

标签: java data-structures hashmap

我在HashMap中存储了3种类型的对象。

HashMap<String, ArrayList<Car>>

['Lorry', [list of lorries]]
['Sport', [list of sport's cars]]

HashMap字符串键保持对象的类型(Car的子类),第二个元素在数组中存储具有例如对象的对象。属性如:ID,日期等。

我要做的四件事是:

  1. 如果没有提供有关其类型
  2. 的信息,请检查HashMap中是否存在某些ID
  3. 根据类型打印特定ID的元素。
  4. 打印特定类型的所有元素
  5. 如果每个对象分配的某个属性具有布尔值,例如,则从集合(不同类型)打印所有元素。 &#34;真&#34 ;;
  6. HashMap是否是正确的结构?如果谈到第一点,我发现它有问题。似乎我将不得不遍历整个集合,如果是这样,其他集合对于这些要求更好?

2 个答案:

答案 0 :(得分:2)

基本方法是合理的,但是由于您只想存储每个实例一次,因此对于地图条目值,Set是比List更好的选择:

Map<String, Set<Car>> typeCache = new HashMap<String, HashSet<Car>>();

contains()的{​​{1}}方法确实非常快,因此查找地图中是否包含特定实例的值不会花费太多。

使用两个映射可能会更好 - 一次针对每种类型的查找,所以也使用:

HashSet

答案 1 :(得分:0)

HashMap是作业的正确数据结构,但在您的情况下,您可以考虑使用两个HashMaps:一个保持关系'Car Type' - &gt; '那种类型的汽车',以及关系'ID'的第二个 - &gt; '有这个ID的车'。