我有兩個arraylist; list1和list2。它包含arraylist中的對象。檢查兩個arraylist是否包含相同的元素
如何檢查兩個arraylist是否包含相同的元素?
我嘗試了等於,但它似乎總是返回false。
我有兩個arraylist; list1和list2。它包含arraylist中的對象。檢查兩個arraylist是否包含相同的元素
如何檢查兩個arraylist是否包含相同的元素?
我嘗試了等於,但它似乎總是返回false。
如果您必須使用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;
}
而不是使用有些過時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))
你不應該使用'ArrayList'。相反,使用通用的'List'。 –
svick
2013-02-16 01:23:57