如何比较两个ArrayList

时间:2014-03-06 09:00:05

标签: c#

如何比较两个ArrayList?

ArrayList l1 = new ArrayList();
l1.Add(1);
l1.Add(2);

我有另一个具有相同值的arrayList。现在我想要比较两者。如果两个ArrayList包含相同的值,则返回True else False。有没有循环的方法?

4 个答案:

答案 0 :(得分:1)

如评论中所述,您可以使用List代替ArrayList,然后使用:

l1.SequenceEqual(l2);

我假设l2是第二个列表的名称。此外,两个列表中的值必须采用相同的顺序,SequenceEqual才能返回true。

此处提供更多信息:http://msdn.microsoft.com/en-us/library/bb348567%28v=vs.110%29.aspx

答案 1 :(得分:0)

使用以下代码:

ArrayList list1 = new ArrayList(new int[] {1,2,3,4,5});

ArrayList list2 = new ArrayList(new int[] {1,2,8});

for (int i=0; i<list1.Count && i<list2.Count; i++)

{

if (!Object.Equals(list1[i], list2[i]))

Console.WriteLine("Different value at index {0}.", i);

}

if (list1.Count > list2.Count)

Console.WriteLine("list1 has more elements than list2.");

if (list2.Count > list1.Count)

Console.WriteLine("list2 has more elements than list1.");

Console.ReadLine();

答案 2 :(得分:0)

如果您使用的是.NET Framework 4.5,则可以使用结构比较,如MSDN中所述。在您的情况下,由于ArrayList尚未实现IStructuralEquatable,您必须首先创建数组列表的数组实例,然后使用IStructuralEquatable,如下所示:

ArrayList list1 = new ArrayList();
ArrayList list2 = new ArrayList();
list1.Add(1);
list2.Add(1);
if ((list1.ToArray() as IStructuralEquatable).Equals(list2.ToArray(), EqualityComparer<int>.Default))
{
    MessageBox.Show("Equal");
}

答案 3 :(得分:-1)

使用此代码:

ArrayList list1 = new ArrayList(new int[] {1,2});

ArrayList list2 = list1;

for (int i = 0; i < list1.Count; i++)
{
   if(list1[i] == list2[i])
   {
       return true;
   }                
}

return false;