标签: java hashmap time-complexity
我有一个包含列表作为其值的hashmap:
HashMap<Integer,ArrayList<<Children>> parent
我之所以使用它是因为它允许O(1)查找属于父节点的子节点(通过使用父ID作为键)。但是,问题是我需要找到孩子的父母。这需要遍历整个Hashmap并查看每个单独映射中的所有值。我不反对这样做但是有什么更快的事情可以做到吗?
答案 0 :(得分:1)
您可以实现定义为here的Guava MultiMap,而不是Map<Integer, List<Children>>。 MultiMap将具有结构MultiMap<Integer, Children>,现在这不能解决您当前的问题。但是,如果您快速查看堆栈溢出,您可以找到像this这样的MultiBiMap的实现,MultiBiMap将具有双向查找的优势,因此您可以通过父ID的ID查找或反向Map并通过Child对象进行查找(**子进程需要HashCode和Equals实现进行查找)。
Map<Integer, List<Children>>
MultiMap<Integer, Children>