如何比较两个ArrayList?
ArrayList l1 = new ArrayList();
l1.Add(1);
l1.Add(2);
我有另一个具有相同值的arrayList。现在我想要比较两者。如果两个ArrayList包含相同的值,则返回True else False。有没有循环的方法?
答案 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;