如何比較兩個ArrayList?如何比較兩個ArrayList
ArrayList l1 = new ArrayList();
l1.Add(1);
l1.Add(2);
和我有同樣的價值的另一個ArrayList的。現在我想比較both.If兩個ArrayList包含相同的值,則返回TRUE,否則假。有沒有任何方法沒有循環?
如何比較兩個ArrayList?如何比較兩個ArrayList
ArrayList l1 = new ArrayList();
l1.Add(1);
l1.Add(2);
和我有同樣的價值的另一個ArrayList的。現在我想比較both.If兩個ArrayList包含相同的值,則返回TRUE,否則假。有沒有任何方法沒有循環?
正如評論所說,你可以使用的ArrayList
然後List
代替:
l1.SequenceEqual(l2);
我假設l2
是第二列表的名稱。而且,SequenceEqual
兩個列表中的值都需要按照相同的順序返回true。
點擊此處瞭解詳情:http://msdn.microsoft.com/en-us/library/bb348567%28v=vs.110%29.aspx
它適用於l1.toArray()。SequenceEqual(l2) –
@BrijeshGandhi您也必須將l2轉換爲數組。否則,你會得到一個運行時異常。 – ohgodnotanotherone
使用下面的代碼:如果您使用的是.NET框架4.5
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();
,您可以使用結構比較,如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");
}
使用此代碼:
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;
你顯然沒有測試過這個。如果列表的前兩項完全相同,那麼它將返回true,並在那裏停止檢查。 – ohgodnotanotherone
在這裏看到: –
Mathias711
僅供參考:您不需要再使用'ArrayList'。它屬於C#沒有_Generics_的舊時代。改爲使用'List'。 –