Как использовать интерфейс 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
чтобы получить все ключи в порядке возрастания.