- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:.NETのSortedListを多用した時の問題点)
.NETのSortedListの多用時の問題点とは?
このQ&Aのポイント
- SortedListを多用すると問題が発生する可能性があります。特に、大量のデータを処理する場合や、メモリ使用量に制約がある場合には注意が必要です。
- SortedListは要素をソートして格納するため、データの挿入や削除には一定の時間がかかります。そのため、頻繁に要素の追加や削除が行われる場合は、パフォーマンスの低下が起こる可能性があります。
- また、SortedListはメモリを連続的に確保する必要があり、大量のデータを処理する場合にはメモリ使用量が増えることがあります。そのため、メモリ使用量に制約がある環境では、他のデータ構造を検討する必要があります。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
MSDN の SortedList のリファレンス http://msdn.microsoft.com/ja-jp/library/ms132319(v=vs.80).aspx を見ると、同じような使い方をする SortedDictionary との比較が書かれています。 正確かつ細かすぎるのでわかりづらいのですが、簡単に言うと、 ・追加・削除が頻発するなら SortedDictionary を使う ・最初の作成後は参照のみで追加・削除はめったに起こらないなら SortedList を使う という使い分けが想定されているようです。 したがって、 > 例えば、キーがあるオブジェクト(マスタのデータ等)は、SortedListのメンバ変数につっこんで > おいて、後でキーを基にデータを取得するってのをよくやります。 という使い方は正しいといえます。 しかし、質問とは関係ない点で気になることがあります。 > 例えば、マスタのクラスが50クラスあったとして、50個のSortedListのメンバ変数を作り > そのメンバー変数経由で、対象キーのオブジェクトを取得する。 これは、 ・リスト内のオブジェクトの数が50個ある ・直接関連のあるリストが適切に分類されてクラスにカプセル化されているが、リストの総計が50個になっている ・1つのクラスの中にリストが50個ある のいずれでしょうか。 1番目ならば問題ありませんし、2番目ならばこれもまあ大丈夫かなとおもいますが、3番目ならばまず確実にクラスの設計がおかしく、適切なクラスの抽出が必要となるでしょう(実際にどうすればいいかはソースを見ないとなんとも言えませんが)。
お礼
ご回答ありがとうございました。 例えだったので、基本的に3番目のような作り方はしません。^^; ただ、過去に個々のマスタクラスにリストを持っておき、それらマスタクラスの生成と 操作を行うクラスをマスタのベースクラスに配置して、基本的にこのマスタ関連の操作は このベースクラスを呼べば大体行える作りにしたことはあります。 これだと多分2番目の考え方に属するかもしれませんが、考え方によっては3番目になるかもしれないですね。。。^^; ありがとうございました。