メソッドfoo
はLinkedHashMap
を返すようにしたいと考えてください(データは挿入順に並べ替えられます)。その理由は、このMap
にはデータベースが設定され、クエリから返される順序を反映させるためです。メソッドのシグネチャを定義する正しい方法は何でしょうか?LinkedHashMapを返すメソッドのシグネチャ<K,V>
public LinkedHashMap<String, String> foo()
public Map<String, String> foo()
最初は、第二は、より一般的になりつつ、マップは、注文されていることをクライアントに広告の利点を持っているでしょう。確かに
理想的には、OrderedMapインターフェイス、ala SortedMapがあり、それを返すことができます。問題は、この方法のクライアントはこれを知る必要があるということですか?またはそれはちょうど反復して、アイテムがちょうど注文されたことをうわべますか? – MeBigFatGuy
この場合、注文が何であるかを記録する方が良いかもしれません。 LinkedHashMapはアクセスオーダーを持っているかもしれません。あるいは、呼び出し側がそれを文書化することをより良く期待しないような方法で注文されるかもしれません。 –