DOBON.NET DOBON.NETプログラミング掲示板過去ログ

どのコレクションを使うか

環境/言語:[VB.NET 2010]
分類:[.NET]

こんにちは。

結構なサイズのファイルをたくさん読み込ませるアプリケーションを作っています。
読み込ませる時に、何十秒かかかるので
そこはスレッドでプログレスバーを出して「読出し中」のような表示をしております。


高速化させるために、一度読み込んだファイルは
オブジェクトとしてメモリ上にキャッシュさせて、
再度、おなじファイルを読み出そうとしたときに
メモリ上に保持しているものがあるなら、それを返す

という仕組みを作ろうとしています。

この際に、
コレクションのArrayListかHashtableかSortedListかを使おうと思っています。
ここで、どれを選択するか迷っているので、アドバイスいただければ幸いです。


単純に、ファイル名をキーにしてオブジェクトを返すのなら
ハッシュテーブルを使うのかな、と思いましたが

実際にはメモリ上のキャッシュしている部分も結構なサイズなので
限界なしを考えてしまうと、メモリオーバーで壊れてしまうこともあるので

最大1000ファイルとか、そういう制限を持たせて
最も古いキャッシュから削除、という動作をさせようとしています。

そうすると、ハッシュテーブルでは、一番古いメモリキャッシュかわからないので
ArrayListで自作なのかな、とも思っています。

ハッシュリストでも、自分の望むような、仕組みを実装できるものでしょうか?


自分のコレクションの知識は、下記を読んだ程度のものです。

VB コレクション - ArrayList, Hashtableなど
http://homepage1.nifty.com/rucio/main/dotnet/shokyu/standard28.htm


ご存知の方、おられましたら教えてください。
よろしくお願いします。
■No30194に返信(FutoNekoさんの記事)

ArrayList => List(Of T)
Hashtable => Dictionary(Of T1,T2)
SortedList => SortedList(Of T1, T2)
またはSortedDictionary(Of T1, T2)

とするほうがよいと思います。
キャッシュデータに最終使用時間を持たせればどれでも
大丈夫だと思います。
List(Of T)を使うことにしました。
Addして、既定数より多ければ先頭から削除としています。
ありがとうございます。

> ArrayList => List(Of T)
> Hashtable => Dictionary(Of T1,T2)
> SortedList => SortedList(Of T1, T2)
> またはSortedDictionary(Of T1, T2)
>
> とするほうがよいと思います。
> キャッシュデータに最終使用時間を持たせればどれでも
> 大丈夫だと思います。
>
解決済み!

DOBON.NET | プログラミング道 | プログラミング掲示板