it-swarm.cn

如何在Java中使用SortedMap接口?

我有一个

 Map<Float, MyObject>

根据浮点数保持地图排序的最佳方法是什么?

SortedMapname__是最佳答案吗? TreeMapname__?我该如何使用它?

我只创建一次地图并使用myMap.put()myMap.get()频繁替换MyObjectname__。

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

请参阅 Java教程页面上的SortedMap
这里是一个教程列表 与TreeMap相关。

81
Barth

TreeMap可能是最简单的方法。你使用它就像普通的Map一样。

    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 看看你还能用它做些什么。

41
Tom Jefferys

你可以使用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/

12
CrazyCoder

TreeMap是SortedMap接口的一个实现,可以工作。

我该如何使用它?

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

TreeMap按键自然排序排序。键应该实现Comparable或与Comparator兼容(如果您将一个实例传递给构造函数)。在您的情况下,Float已经实现了Comparable,因此您不必执行任何特殊操作。

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

2
Mister Smith