web-dev-qa-db-ja.com

JavaでSortedMapインターフェイスを使用する方法は?

私が持っています

 Map<Float, MyObject>

マップをフロートに従ってソートしたままにする最良の方法は何ですか?

SortedMapがベストアンサーですか? TreeMap?どうやって使うの?

マップを1回だけ作成し、myMap.put()myMap.get()を使用してMyObjectを頻繁に置き換えます。

62
Bick

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に関連しています。

82
Barth

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 を見て、他に何ができるかを確認する価値があります。それ。

42
Tom Jefferys

以下の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/ を参照してください。

13
CrazyCoder

SortedMapインターフェースの実装であるTreeMapは機能します。

どうやって使うの?

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

TreeMapは、キーの自然順序付けでソートします。キーはComparableを実装するか、Comparatorと互換性があります(1つのインスタンスをコンストラクターに渡した場合)。あなたの場合、Floatは既にComparableを実装しているので、特別なことをする必要はありません。

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

2
Mister Smith