2013-02-16 216 views
0

我有兩個arraylist; list1和list2。它包含arraylist中的對象。檢查兩個arraylist是否包含相同的元素

如何檢查兩個arraylist是否包含相同的元素?

我嘗試了等於,但它似乎總是返回false。

+2

你不應該使用'ArrayList'。相反,使用通用的'List '。 – svick 2013-02-16 01:23:57

回答

0

如果您必須使用arraylist,您可以將它們轉換爲IEnumberable,然後使用linq交集。

static bool IsSame(ArrayList source1, ArrayList source2) 
{ 
    var count = source1.Count; 
    // no use comparing if lenghts are different 
    var diff = (count != source2.Count); 
    if (!diff) 
    { 
     // change to IEnumberable<object> 
     var source1typed = source1.Cast<object>(); 
     var source2typed = source2.Cast<object>(); 
     // If intersection is the same count then same objects 
     diff = (source1typed.Intersect(source2typed).Count() == count); 
    } 
    return diff; 
} 
1

而不是使用有些過時System.Collections你應該使用一般的對口System.Collections.Generic。有here描述的各種優點。

您可以創建一個通用的方法來確定兩個集合是否相同或不:

Private Function UnanimousCollection(Of T)(ByVal firstList As List(Of T), ByVal secondList As List(Of T)) As Boolean 
    Return firstList.SequenceEqual(secondList) 
End Function 

用法示例:

Dim teachers As List(Of String) = New List(Of String)(New String() {"Alex", "Maarten"}) 
Dim students As List(Of String) = New List(Of String)(New String() {"Alex", "Maarten"}) 
Console.WriteLine(UnanimousCollection(teachers, students)) 
相關問題