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

时间:2018-01-19 07:28:46

标签: c# data-structures binding

我有两个列表,每个列表有两个不同类型的对象,List list1和List list2。 list1中i位置的对象与list2中位置i的对象相关。

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

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

1 个答案:

答案 0 :(得分:0)

两个建议:

  • List由数组支持,因此您可以利用随机访问。不是提供A的实例,而是通过调用i提供索引B(如果可能)并在O(1)中获取bList[i]的实例
  • 扩展类AB以包含对来自其他类的相关对象的引用。它会使您的插入和删除操作更复杂,但搜索操作将为O(1),这是您进行大量搜索操作时的合理权衡。