• ベストアンサー

Mapに登録した値を登録した順に取り出したいです。

Mapに登録した値を登録した順に取り出したいです。 TreeMapを使えば順番に取れるという風に書いてありましたが、 どうもキーの昇順で出ているようで、こちらの希望する出し方ができません。 私は登録した順番で取りたいのですが、どの様にすればよいでしょうか。 ちなみに、マップのキー、値ともにString型です。

質問者が選んだベストアンサー

  • ベストアンサー
  • newta777
  • ベストアンサー率58% (20/34)
回答No.2

TreeMapはキーの昇順に並べ替えるMapです。 登録順を保持するMapならば、LinkedHashMapを使えばできると思います。

gutiguti2010
質問者

お礼

ありがとうございます! TreeMapの箇所をLinkedHashMapに変更した所、すんなりうまくいきました!

すると、全ての回答が全文表示されます。

その他の回答 (1)

回答No.1

あくまでMapを使うのですね。 最良の方法かどうかはわかりませんが、ぱっと思いつく限りでは 1.外部に順序を管理する ・TreeMapに要素を追加/更新するタイミングでArrayList、LinkedListあたりにkeyを削除/追加する。 ・読み出し時はそのListをぐるぐる回す。 2.キー自身に順序を持たせる ・Stringのkeyと時系列昇順のid(※)を持ち、id基準の自然順序付けを持つクラスを定義する。 ・equalsメソッド、hashCodeメソッドをkey基準の結果を返すように再定義する。 ・作成したクラスのインスタンスをTreeMapのkeyとして使用する。 ・読み出し時はkeySet().iterator()をぐるぐる回す。 ※クラス変数で採番した数値やSystem.nanoTime()の戻り値等。 等の方法がありそうです。 でも、もっと良いやり方がありそうな気がします。

すると、全ての回答が全文表示されます。

関連するQ&A