HashMap是一个合适的数据结构

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

HashMap<String, ArrayList> ['Lorry', [list of lorries]] ['Sport', [list of sport's cars]] 

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

我要做的四件主要事情是:

  1. 当没有提供有关其类型的信息时,检查HashMap中是否存在某些ID
  2. 根据类型打印某些ID的元素。
  3. 打印特定类型的所有元素
  4. 如果每个对象分配的某个属性具有布尔值,例如“true”,则打印集合(不同类型)中的所有元素;

HashMap是否是正确的结构? 如果谈到第一点,我发现它有问题。 似乎我将不得不遍历整个集合,如果是这样,其他集合对于这些要求更好?

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

 Map> typeCache = new HashMap>(); 

HashSetcontains()方法确实非常快,因此查找您的地图是否包含其中的特定实例值并不会花费太多。

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

 Map idCache = new HashMap(); 

HashMap是作业的正确数据结构,但在您的情况下,您可以考虑使用两个HashMaps:一个持有“Car Type” – >“Cars of the Type”的关系,第二个用于关系’ID’ – >’带有该ID的车’。