2 つの arraylist があります。リスト 1 とリスト 2。arraylist 内のオブジェクトが含まれます。
2 つの配列リストに同じ要素が含まれているかどうかを確認するにはどうすればよいですか?
equals で試してみましたが、常に false を返すようです。
やや非推奨のSystem.Collections
を使用するのではなく、対応する一般的な を使用する必要がありますSystem.Collections.Generic
。ここで説明するさまざまな利点があります。
2 つのコレクションが同じかどうかを判断するジェネリック メソッドを作成できます。
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 を使用する必要がある場合は、それらを 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;
}