2014-03-06 127 views
0

如何比較兩個ArrayList?如何比較兩個ArrayList

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

和我有同樣的價值的另一個ArrayList的。現在我想比較both.If兩個ArrayList包含相同的值,則返回TRUE,否則假。有沒有任何方法沒有循環?

+3

在這裏看到: Mathias711

+2

僅供參考:您不需要再使用'ArrayList'。它屬於C#沒有_Generics_的舊時代。改爲使用'List '。 –

回答

1

正如評論所說,你可以使用的ArrayList然後List代替:

l1.SequenceEqual(l2); 

我假設l2是第二列表的名稱。而且,SequenceEqual兩個列表中的值都需要按照相同的順序返回true。

點擊此處瞭解詳情:http://msdn.microsoft.com/en-us/library/bb348567%28v=vs.110%29.aspx

+0

它適用於l1.toArray()。SequenceEqual(l2) –

+0

@BrijeshGandhi您也必須將l2轉換爲數組。否則,你會得到一個運行時異常。 – ohgodnotanotherone

0

使用下面的代碼:如果您使用的是.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(); 
0

,您可以使用結構比較,如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"); 
} 
0

使用此代碼:

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; 
+0

你顯然沒有測試過這個。如果列表的前兩項完全相同,那麼它將返回true,並在那裏停止檢查。 – ohgodnotanotherone