我在 HashMap 中存储了 3 种类型的对象。
HashMap<String, ArrayList<Car>>
['Lorry', [list of lorries]]
['Sport', [list of sport's cars]]
HashMap 字符串键保存对象的类型(Car 的子类),第二个元素在数组中存储具有例如属性,例如:ID、日期等。
我要做的四件主要事情是:
- 当没有提供有关其类型的信息时,检查 HashMap 中是否存在某个 ID
- 在给定类型的情况下打印特定 ID 的元素。
- 打印特定类型的所有元素
- 如果每个对象分配的某些属性具有 boolean 值,例如,则打印集合中的所有元素(不同类型) “真实”;
HashMap 的结构是否正确?如果涉及第一点,我觉得有问题。看来我必须遍历整个集合,如果是的话,还有什么其他集合更适合这种要求?
最佳答案
基本方法是合理的,但是由于您只想将每个实例存储一次,对于映射条目值,Set
是比 List
更好的选择:
Map<String, Set<Car>> typeCache = new HashMap<String, HashSet<Car>>();
HashSet
的 contains()
方法确实非常快,因此查找映射的值中是否包含特定实例不会花费太多。
使用两个映射可能会更好 - 每种类型的查找一次,所以也使用:
Map<String, Object> idCache = new HashMap<String, Object>();
关于java - HashMap 是正确的数据结构吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12239487/