我有两个列表 A 和 B(列表).如何以最便宜的方式确定它们是否相等?我可以写类似'(A减B)联合(B减A)=空集'或将它们连接在一起并计算元素数量,但它相当昂贵.有解决办法吗?
I have two lists A and B (List). How to determine if they are equal in the cheapest way? I can write something like '(A minus B) union (B minus A) = empty set' or join them together and count amount of elements, but it is rather expensive. Is there workaround?
嗯,这取决于你如何解释你的列表.
Well, that depends on how you interpret your lists.
如果您将它们视为元组(因此列表中元素的顺序很重要),那么您可以使用以下代码:
If you consider them as tuples (so the order of elements in lists matters), then you can go with this code:
public bool AreEqual<T>(IList<T> A, IList<T> B)
{
if (A.Count != B.Count)
return false;
for (int i = 0; i < A.Count; i++)
if (!A[i].Equals(B[i]))
return false;
}
如果您将列表视为集合(因此元素的顺序无关紧要),那么...我猜您使用了错误的数据结构:
If you consider your lists as sets (so the order of elements doesn't matter), then... you are using the wrong data structures I guess:
public bool AreEqual<T>(IList<T> A, IList<T> B)
{
HashSet<T> setA = new HashSet<T>(A);
return setA.SetEquals(B);
}
这篇关于在 linq 中设置相等的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持跟版网!