地図で広告掲載順序の問題を伝える方法は?
データベースから一連のタプルを取得して、マップに入れています。データベースクエリは高価です。 マップ内の要素の明らかな自然な順序付けはありませんが、それでも挿入順序は重要です。マップの並べ替えは重い操作になるため、クエリ結果が既に希望どおりに並べ替えられている場合は、それを避ける必要があります。したがって、クエリ結果をに保存LinkedHashMapし、DAOメソッドからマップを返します。 public LinkedHashMap<Key, Value> fetchData() processDataマップ上で何らかの処理を行うメソッドがあります。いくつかの値を変更し、いくつかの新しいキー/値を追加します。次のように定義されます public void processData(LinkedHashMap<Key, Value> data) {...} ただし、いくつかのリンター(ソナーなど)は、「データ」のタイプは「LinkedHashMap」(squid S1319)の実装ではなく、「Map」などのインターフェースであるべきだと文句を言います。 だから基本的には私が持っているべきだと言っている public void processData(Map<Key, Value> data) {...} しかし、メソッドのシグネチャには、マップの順序が重要であると言うようにしたい-それはアルゴリズムにとって重要であるprocessData-したがって、私のメソッドはランダムなマップだけに渡されない。 を使用したくないのはSortedMap、(のjavadocからjava.util.SortedMap)「キーの自然な順序に従って、またはソートされたマップ作成時に通常提供されるComparatorによって順序付けられる」ためです。 私のキーには自然な順序がありません。コンパレータを作成して何もしないのは冗長です。 そして、putキーの重複などを回避するために活用するために、それがマップであることを依然として望んでdataいますList<Map.Entry<Key, Value>>。 それで、私のメソッドはすでにソートされたマップを必要としていると言うにはどうすればいいですか 残念なことに、java.util.LinkedMapインターフェースはありません。そうでなければ、私はそれを使用していました。