HashMap是一个合适的数据结构
我在HashMap中存储了3种类型的对象。
HashMap<String, ArrayList> ['Lorry', [list of lorries]] ['Sport', [list of sport's cars]]
HashMap字符串键保持对象的类型(Car的子类),第二个元素在数组中存储具有如下属性的对象:ID,日期等。
我要做的四件主要事情是:
- 当没有提供有关其类型的信息时,检查HashMap中是否存在某些ID
- 根据类型打印某些ID的元素。
- 打印特定类型的所有元素
- 如果每个对象分配的某个属性具有布尔值,例如“true”,则打印集合(不同类型)中的所有元素;
HashMap是否是正确的结构? 如果谈到第一点,我发现它有问题。 似乎我将不得不遍历整个集合,如果是这样,其他集合对于这些要求更好?
基本方法是合理的,但是由于您只想存储每个实例一次,因此对于映射条目值, Set
是比List
更好的选择:
Map> typeCache = new HashMap>();
HashSet
的contains()
方法确实非常快,因此查找您的地图是否包含其中的特定实例值并不会花费太多。
使用两个地图可能会更好 – 一次针对每种类型的查找,所以也使用:
Map idCache = new HashMap();
HashMap
是作业的正确数据结构,但在您的情况下,您可以考虑使用两个HashMaps:一个持有“Car Type” – >“Cars of the Type”的关系,第二个用于关系’ID’ – >’带有该ID的车’。