Как использовать интерфейс SortedMap в Java?

у меня есть

 Map<Float, MyObject>

каков наилучший способ сохранить карту отсортированной в соответствии с поплавком?

Is SortedMap лучший ответ? TreeMap? Как его использовать?

Я создаю карту только один раз и заменяю MyObject часто используя myMap.put() и myMap.get().

5 ответов


Я хотел бы использовать 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());
}

посмотреть страница учебника Java для SortedMap.
И вот список учебных пособий связано с TreeMap.


TreeMap, вероятно, самый простой способ сделать это. Вы используете его точно так же, как обычную карту.

ie

    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 чтобы увидеть, что еще вы можете сделать с ним.


Вы можете использовать TreeMap, который внутренне реализует SortedMap ниже пример

сортировка по возрастанию:

  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/


TreeMap, который является реализацией интерфейса SortedMap, будет работать.

как его использовать ?

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

TreeMap сортирует по ключевому естественному порядку. Ключи должны реализовать Comparable или быть совместимым с Comparator (Если вы передали один экземпляр конструктору). В твоем случае,Float уже реализует Comparable Так что вам не нужно делать ничего особенного.

можно назвать keySet чтобы получить все ключи в порядке возрастания.