遍历列表值的Hasmap的替代方法?

时间:2016-05-20 14:07:52

标签: java hashmap time-complexity

我有一个包含列表作为其值的hashmap:

HashMap<Integer,ArrayList<<Children>> parent

我之所以使用它是因为它允许O(1)查找属于父节点的子节点(通过使用父ID作为键)。但是,问题是我需要找到孩子的父母。这需要遍历整个Hashmap并查看每个单独映射中的所有值。我不反对这样做但是有什么更快的事情可以做到吗?

1 个答案:

答案 0 :(得分:1)

您可以实现定义为here的Guava MultiMap,而不是Map<Integer, List<Children>>。 MultiMap将具有结构MultiMap<Integer, Children>,现在这不能解决您当前的问题。但是,如果您快速查看堆栈溢出,您可以找到像this这样的MultiBiMap的实现,MultiBiMap将具有双向查找的优势,因此您可以通过父ID的ID查找或反向Map并通过Child对象进行查找(**子进程需要HashCode和Equals实现进行查找)。

PS:我知道这很复杂,但如果你纯粹是为了提高效率,这应该是非常有效的。

相关问题