dポイントプレゼントキャンペーン実施中!

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

A 回答 (2件)

TreeMapはキーの昇順に並べ替えるMapです。


登録順を保持するMapならば、LinkedHashMapを使えばできると思います。
    • good
    • 0
この回答へのお礼

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

お礼日時:2010/04/29 00:13

あくまでMapを使うのですね。


最良の方法かどうかはわかりませんが、ぱっと思いつく限りでは

1.外部に順序を管理する
・TreeMapに要素を追加/更新するタイミングでArrayList、LinkedListあたりにkeyを削除/追加する。
・読み出し時はそのListをぐるぐる回す。

2.キー自身に順序を持たせる
・Stringのkeyと時系列昇順のid(※)を持ち、id基準の自然順序付けを持つクラスを定義する。
・equalsメソッド、hashCodeメソッドをkey基準の結果を返すように再定義する。
・作成したクラスのインスタンスをTreeMapのkeyとして使用する。
・読み出し時はkeySet().iterator()をぐるぐる回す。
※クラス変数で採番した数値やSystem.nanoTime()の戻り値等。

等の方法がありそうです。
でも、もっと良いやり方がありそうな気がします。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!