如何在Java中使用SortedMap接口?

我有一个

map<Float, MyObject> 

按照浮点数sorting的地图最好的办法是什么?
SortedMap是最好的答案吗? TreeMap ? 我如何使用它?

(我只创build一次地图,并经常使用myMap.put()myMap.get() )来replaceMyObject

我会用TreeMap ,它实现SortedMap 。 它正是为此而devise的。

例:

 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作为例子

按升序sorting:

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

按降序sorting:

  //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按关键的自然顺序进行sorting。 键应该实现Comparable或与Comparator兼容(如果您将一个实例传递给构造函数)。 在你的情况下, Float已经实现了Comparable所以你不必做任何特殊的事情。

您可以调用keySet来按升序检索所有的键。