2011-09-15 6 views
46

私はフロートに従ってソートマップを保持するための最良の方法は何JavaでSortedMap Interfaceを使用するには?

map<Float, MyObject> 

を持っています。
SortedMapが最善の答えですか? TreeMap?どうやって使うの?

(私は一度だけマップを作成し、 myMap.put()myMap.get()を使用して、頻繁にMyObjectを置き換える)SortedMapインタフェースの実装です

+0

しかし、SortedMapはインターフェイスです。 TreeMapはSortedMapを実装します。 –

+0

回答を参照してくださいここで '@ user157196' http://stackoverflow.com/questions/109383/how-to-sort-a-mapkey-value-on-the-values-in-java – Bitmap

+0

Tom Jefferys '答え – JohnnyLambada

答えて

59

私はSortedMapを実装TreeMapを使用します。そのために設計されています。

例:

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()); 
} 

Java tutorial page for SortedMapを参照してください。
およびhere a list of tutorialsに関連すると、

+0

どうしてあなたはなぜ単に新しい整数(n)をしますか? –

+0

@Adam_G特別な理由はない、私はこの回答を書いたとき、私はオートボクシング(?)に慣れていなかったと思う。 – Barth

3

のTreeMap、働くだろう。

どうすれば使用できますか?

Map<Float, MyObject> map = new TreeMap<Float, MyObject>(); 
34

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 

すなわち、それはあなたがそれを行うことができます他に何を参照して、http://download.oracle.com/javase/6/docs/api/java/util/TreeMap.html APIドキュメントを見てみる価値です。

+0

IMHOこれは受け入れられた答えよりも優れています – Kawu

2

TreeMapキーナチュラルオーダーによるソート。キーはComparableを実装するか、Comparator(コンストラクターに1つのインスタンスを渡した場合)と互換性があります。あなたのケースでは、Floatは既にComparableを実装しているので、特別な操作は必要ありません。

keySetを呼び出して、すべてのキーを昇順で取得できます。

9

あなたは内部的に順序昇順にソート

例である下記のSortedMapを実装するのTreeMapを使用することができます順序を降順でソート

Map<Integer,String> ascsortedMAP = new TreeMap<Integer,String>(); 

    ascsortedMAP.put(8, "name8"); 
    ascsortedMAP.put(5, "name5"); 
    ascsortedMAP.put(15, "name15"); 
    ascsortedMAP.put(35, "name35"); 
    ascsortedMAP.put(44, "name44"); 
    ascsortedMAP.put(7, "name7"); 
    ascsortedMAP.put(6, "name6"); 

    for(Map.Entry<Integer, String> mapData : ascsortedMAP.entrySet()) { 
    System.out.println("Key : " +mapData.getKey()+ "Value : "+mapData.getValue()); 
    } 

を:ため

//Create the map and provide the comparator as a argument 
    Map<Integer,String> dscsortedMAP = new TreeMap<Integer,String>(new Comparator<Integer>() 
    { 
     @Override 
     public int compare(Integer o1, Integer o2) {     
      return o2.compareTo(o1); 
     } 
    }); 
    dscsortedMAP.putAll(ascsortedMAP); 

     for(Map.Entry<Integer, String> mapData : dscsortedMAP.entrySet()) { 
     System.out.println("Key : " +mapData.getKey()+" Value : "+mapData.getValue()); 
     } 

SortedMAPについての詳細はhttp://examples.javacodegeeks.com/core-java/util/treemap/java-sorted-map-example/

+0

コンパレータを使ってSortedMapを設計したので、この答えが好きです – CodeToLife

関連する問題