2 つの主要な属性を持つデータ セットを維持したいと考えています。遅くなる可能性があります。より具体的な例として、各ユーザーが一意の ID (int) と一意のユーザー名 (文字列) を持つ一連のユーザー データがあります。私はユーザーを追加したり削除したりします。時には、人間が読めるアルファベット順に並べ替えられたリストをユーザーに生成したい場合もありますが、ユーザーの数が増えると、データの並べ替えに必要な時間も長くなります。
これをどのように構成しますか?私が考えることができる唯一の合理的なアプローチは、2 つの別個のデータ構造を作成し、同時に両方の構造に重複して項目を追加/削除することです。データが大きくなると、単一の構造よりも多くのデータが使用されます。後でコードに追加するために戻ったときに、両方の構造に操作を複製することを忘れないようにする必要があるため、この方法でさらにバグを導入する可能性もあります。言い換えれば、私は持つことができます:
TreeMap<String,Integer> nameSortedMap = new TreeMap<String,Integer>(String.CASE_INSENSITIVE_ORDER);
と
Map<Integer,String> idMap = new HashMap<Integer,String>();
データを追加または削除するときはいつでも、両方のマップで行います。ID でユーザー名を取得する場合は、idMap.get(id) または idMap.contains(id) を呼び出します (ユーザーが存在するかどうかを確認するため)。一方、並べ替えられたリストを表示する必要がある場合は、nameSortedMap.keySet() を使用します。これは、並べ替えられたリストが必要になるたびに追加の作業を行う必要がないように、既に名前順に並べられている必要があります。
私の思考プロセスはどうですか?これを達成するためのより良い、またはより簡単な方法はありますか? ありがとうございました!