これでマップを反復処理する方法のコードです:Javaは順番
for(String key : mymap.stringPropertyNames()) {
//mycode
}
これが正常に動作しますが、私は私がランダムな順序で必要な値を取得するに気づいた、使用してマップをループする方法があります特定の順序?
編集:Mymap
は、properties
オブジェクトです。
これでマップを反復処理する方法のコードです:Javaは順番
for(String key : mymap.stringPropertyNames()) {
//mycode
}
これが正常に動作しますが、私は私がランダムな順序で必要な値を取得するに気づいた、使用してマップをループする方法があります特定の順序?
編集:Mymap
は、properties
オブジェクトです。
あなたはHashMap
のように並べ替えなし
Map
を使用しているので、これはこのクラスはマップの順序を保証しません[...]です。特に、注文がの一定時間()になると保証するものではありません。これに代えて
、あなたは次のようにいくつかの具体的な実装を使用することができます。
マップがそのキーの自然順序付けに従ってソートまたは提供されるComparatorによってれますどのコンストラクタが使用されているかに応じて、マップ作成時に
LinkedHashMap
あなたはいないがを複製する必要がある場合
Hash
テーブルと予測可能な繰り返し順序を持つMap
インタフェースのリンクリストの実装です。
okありがとう、私はコードを変更します – Ciurga
@Ciurgaあなたがそれらをループする必要がある場合は、順序を維持し、代わりにリストを使用することを考慮してキーにアクセスする必要はありません。 –
@Ciurgaこれはあなたの最初の質問です。**これまたは任意の回答があなたの質問を解決した場合は、[同意します](http://meta.stackexchange.com/q/5234/179419)**をクリックして**チェックマーク。これはあなたが解決策を見つけたことを広域コミュニティに示し、**回答者とあなた自身の両方にいくつかの評判を与えます**。これを行う義務はありません。 –
あなたは予測可能な繰り返し順序(挿入順番を)したいなら、あなたは要素をソートしたい場合は、TreeMapを使用する必要がLinkedHashMap
を使用し、この場合にはキーはComparableインタフェース
を実装する必要がありますキーの順序を変更する前に、キーの順序付けまたは並べ替えをサポートするもののいずれかにマップの実装を変更します。私はちょっと混乱していますが、普通はkeySet
メソッドで地図のキーを取得します。私はstringPropertyNames
に慣れていないですが、それは地図である場合は(未テストコード)のような何かを行うことができるはず:
List keys = new ArrayList(mymap.keySet())
Collections.sort(keys)
for (String key : keys) {
[...]
}
'mymap'が何であるかに依存していること。 – Eran
@Ciurga、どの地図を使用していますか?いくつかの論理的順序に基づいて内容を格納して反復するためにTreeMap inorderを使う必要があります –
mymapは実際にはプロパティオブジェクトです – Ciurga