コレクション比較の高速化


VB.NET初心者  2006-03-03 22:46:17  No: 130544

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


ひろ  2006-03-06 21:26:02  No: 130545

VB.netには詳しくないのですが、一般的によく使う方法はハッシュテーブルや集合型などを使う方法です。
VB.netにもその手のクラスが用意されていませんか?


※返信する前に利用規約をご確認ください。




  


  このエントリーをはてなブックマークに追加