java - HashMap 是正确的数据结构吗

标签 java data-structures hashmap

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

HashMap<String, ArrayList<Car>>

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

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

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

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

HashMap 的结构是否正确?如果涉及第一点,我觉得有问题。看来我必须遍历整个集合,如果是的话,还有什么其他集合更适合这种要求?

最佳答案

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

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

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

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

Map<String, Object> idCache = new HashMap<String, Object>();

关于java - HashMap 是正确的数据结构吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12239487/

相关文章:

Java:如何使用 Map<String,String> 填充文本中的占位符?

Java Http 请求 JSON 和响应处理

java - 在android studio中找到保存的文件

c++ - 指向二叉树中新节点的指针

java - 可以用不同的 Number 返回类型覆盖接口(interface)方法吗?

java - 如何直接在 android 中从 HashMap 设置对象字段

java - 不冗余地比较相同的列表

java - 如何在Java中将8个字符的字符串转换为ARGB颜色格式?

algorithm - 通过仅以相同顺序插入节点来从 Preorder 获得 BST

java - HashMap 一个键关联到一个列表