私が持っています
Map<Float, MyObject>
マップをフロートに従ってソートしたままにする最良の方法は何ですか?
SortedMap
がベストアンサーですか? TreeMap
?どうやって使うの?
マップを1回だけ作成し、myMap.put()
とmyMap.get()
を使用してMyObject
を頻繁に置き換えます。
TreeMap
を実装するSortedMap
を使用します。そのために設計されています。
例:
Map<Integer, String> map = new TreeMap<Integer, String>();
// Add Items to the TreeMap
map.put(1, "One");
map.put(2, "Two");
map.put(3, "Three");
// Iterate over them
for (Map.Entry<Integer, String> entry : map.entrySet()) {
System.out.println(entry.getKey() + " => " + entry.getValue());
}
SortedMapのJavaチュートリアルページ を参照してください。
そして ここではチュートリアルのリスト TreeMapに関連しています。
TreeMapは、おそらくこれを行う最も簡単な方法です。通常のマップとまったく同じように使用します。
すなわち
Map<Float,String> mySortedMap = new TreeMap<Float,MyObject>();
// Put some values in it
mySortedMap.put(1.0f,"One");
mySortedMap.put(0.0f,"Zero");
mySortedMap.put(3.0f,"Three");
// Iterate through it and it'll be in order!
for(Map.Entry<Float,String> entry : mySortedMap.entrySet()) {
System.out.println(entry.getValue());
} // outputs Zero One Three
APIドキュメント、 http://download.Oracle.com/javase/6/docs/api/Java/util/TreeMap.html を見て、他に何ができるかを確認する価値があります。それ。
以下のSortedMapを内部で実装するTreeMapを使用できます
昇順で並べ替え:
Map<Float, String> ascsortedMAP = new TreeMap<Float, String>();
ascsortedMAP.put(8f, "name8");
ascsortedMAP.put(5f, "name5");
ascsortedMAP.put(15f, "name15");
ascsortedMAP.put(35f, "name35");
ascsortedMAP.put(44f, "name44");
ascsortedMAP.put(7f, "name7");
ascsortedMAP.put(6f, "name6");
for (Entry<Float, String> mapData : ascsortedMAP.entrySet()) {
System.out.println("Key : " + mapData.getKey() + "Value : " + mapData.getValue());
}
降順でソート:
常にこれが必要な場合は、マップを作成して一般に降順を使用し、必要な場合は一度だけ降順でTreeMapを作成し、元のマップのすべてのデータを配置します。
// Create the map and provide the comparator as a argument
Map<Float, String> dscsortedMAP = new TreeMap<Float, String>(new Comparator<Float>() {
@Override
public int compare(Float o1, Float o2) {
return o2.compareTo(o1);
}
});
dscsortedMAP.putAll(ascsortedMAP);
sortedMAPの詳細については、 http://examples.javacodegeeks.com/core-Java/util/treemap/Java-sorted-map-example/ を参照してください。
SortedMapインターフェースの実装であるTreeMapは機能します。
どうやって使うの?
Map<Float, MyObject> map = new TreeMap<Float, MyObject>();
TreeMap
は、キーの自然順序付けでソートします。キーはComparable
を実装するか、Comparator
と互換性があります(1つのインスタンスをコンストラクターに渡した場合)。あなたの場合、Float
は既にComparable
を実装しているので、特別なことをする必要はありません。
keySet
を呼び出して、すべてのキーを昇順で取得できます。