VB.NETで開発をしております。
下記のようにArrayListクラスを使用して
コレクションに保持しているクラスオブジェクトの
中身を比較して一致していない場合は新しいArrayListクラス
に保持するというプログラムを作成しました。
しかしそれぞれのArrayListクラスに1万個近く保持していると
かなりの処理時間を要してしまいます。
ArraryListクラス以外によいクラスライブラリや
下記以外のよいアルゴリズムがありましたら
ご教授お願いします。
' DBクラスにはString型の変数が定義されている
' Col1,Col2にそれぞれ異なるDBクラスオブジェクトを保持
Private Sub xxx(Col1 As ArrayList, _
Col2 As ArrayList)
Dim DB1 as DB
Dim DB2 as DB
Dim NDB as NewDB
Dim Col3 As ArrayList
-----略-----
For i = 0 To Col1.Count - 1
DB1 = DirectCast(Col1.Item(i), DB)
For j = 0 To Col2.Count - 1
DB2 = DirectCast(Col2.Item(j), DB)
If DB1.A = DB2.A then
'' DB1,DB2が既に格納済みかチェックをして
格納済みでない場合はCol3=DB1,DB2を保持
For i = 0 To Col3.Count - 1
NDB = DirectCast(Col3.Item(i), NewDB)
If NDB.A <> DB1.A Then
NDB.A = DB1.A
NDB.B = DB2.A
col3.Add(NDB)
End If
Next
VB.netには詳しくないのですが、一般的によく使う方法はハッシュテーブルや集合型などを使う方法です。
VB.netにもその手のクラスが用意されていませんか?
ツイート | ![]() |