如何在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
来按升序检索所有的键。