繁体   English   中英

两个对象之间的双重绑定应该使用什么数据结构?

[英]What data structure should I use for a double binding between two objects?

我有两个具有两种不同类型对象的列表,分别是列表list1和List list2。 在位置的对象i List1中在位置与该相关i在list2中。

我必须回答这种类型的查询,给定对象A返回对象B在list2中的相同位置,反之亦然,给定对象B返回对象A在list1中的相同位置。

简单的解决方案是对每个查询进行O(n)搜索。 我正在寻找可能的解决方案来改进它。 到目前为止,我有两个字典,一个Dictionary<A, B> dicAtoB and Dictionary<B, A> dicBtoA ,我在其中分别插入了列表中的所有元素。 我正在寻求其他解决方案,因为在我的元素中插入了两次,并且我不得不使用这两个额外的字典,并且...我不知道还有什么,但我只是不太喜欢我。

两个建议:

  • 列表由数组支持,因此您可以利用随机访问。 代替提供A实例,而是通过调用bList[i]提供索引i (如果可能)并在O(1)获得B实例。
  • 扩展类AB以包括对另一类相关对象的引用。 这会使您的插入和删除操作更加复杂,但是搜索操作将为O(1) ,这是合理的折衷方案,以防您执行大量搜索操作

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM