哪种操作更受欢迎和/或更有效?
我最终使用了一个元组列表,但我很好奇哪个是首选。
意见欢迎,但我希望通过谷歌找不到技术方面。
答案 0 :(得分:4)
这取决于数据的含义。
如果它是两个数字列表,那么列表元组就是正确的。如果它是一个数字对列表,那么元组列表就是正确的。
无论整数是什么意思,这些列表的长度是否合适?如果是这样,那么你可能有两个独立的列表,一个列表元组是正确的。
如果整数只有列表长度相等才有意义,那么你可能有一个数字对列表,所以元组列表是正确的。
答案 1 :(得分:4)
两个列表的元组每个项目包含2个引用类型/指针(每个列表1个),2元组列表只涉及一个(每个元组1个),所以你节省了8个?每个项目的字节数(忘记指针+ .net metainfo有多大)。
这样的微优化是否有意义?我对此表示怀疑。我宁愿建议从业务逻辑角度使用最有意义的东西。
答案 2 :(得分:4)
这些选项具有完全不同的语义。
一个意味着两个列表只有彼此之间的连接,并且列表A中位置x
中的元素与列表B中的相同位置不对应。以下内容完全有效:
{ [1, 2, 3, 4, 5, 6], [7] }
另一个是配对元素列表。如果你想把两个数字联系在一起,一组来自A组,一组来自B组,我怀疑你想要一个List<Tuple<int, int>>
。在这种情况下,上面的示例将无效,并且当您想要使用列表时,您可能会为自己省去很多麻烦。
与往常一样,考虑您要模拟的内容并确定最适合的数据结构。对于可忽略的性能改进而言,不值得牺牲语义完整性(至少,使用语义正确的版本构建它并在性能问题出现时进行破解)。我不确定这里是否有性能问题,但如果有的话,第二个选项会导致内存占用更少(因为你分配的列表更少)
答案 3 :(得分:3)
他们是两个不同的东西。第一个是如果你想要一个元组,它包含两个没有真正关联的整数列表,但这两个列表在某种程度上是整体相关的。第二个是具有两个整数的元组列表,因此整数A以某种方式链接到元组中的整数B.
盲目地猜测,你可能想要选项B.这意味着每个元组都有两个以某种方式链接的整数。我可能是错的,但在这两个选项中,这是大多数人想要的。它有点像关键值对。
答案 4 :(得分:2)
这取决于你想要达到的目标。我想您希望拥有多对int
,然后List<Tuple<int, int>>
就是解决方案。可能有些情况下其他人都很有用,但我无法想到任何其他问题。