按键对此HashMap进行排序?

时间:2014-08-28 08:10:26

标签: java android hashmap

我希望能够按键对下面的HashMap进行排序,我尝试过如下代码:

SortedSet<String> keys = new TreeSet<String>(HashMap.keySet());
for (String key : keys) { 
  // String value = map.get(key);
   // do something
}

但这会带来错误:

Cannot make a static reference to the non-static method keySet() from the type HashMap

如果有人能指出我正确的方向,那就太好了,谢谢!

HashMap和它的关键:

ArrayList<HashMap<String, String>> menuItems = new ArrayList<HashMap<String, String>>();
// XML node keys
static final String KEY_ITEM = "item"; // parent node
static final String KEY_ID = "id";
static final String KEY_NAME = "name";
static final String KEY_TITLE = "title";
static final String KEY_COST = "cost";
static final String KEY_DESC = "description";
static final String KEY_LINK = "link";
static final String KEY_PUBDATE = "pubDate";

3 个答案:

答案 0 :(得分:2)

您正在使用“HashMap”调用“keySet()”方法,就好像这是一个静态方法。您需要在地图对象上调用“keySet()”方法,而不是通过类。

更改此

SortedSet<String> keys = new TreeSet<String>(HashMap.keySet());

到这个

SortedSet<String> keys = new TreeSet<String>(map.keySet());

答案 1 :(得分:0)

SortedSet<String> keys = new TreeSet<String>(HashMap.keySet());

keySet()是一个非静态方法,所以你必须在HashMap的实例上调用keySet()。

所以试试这个:

HashMap<String, String> test = new HashMap<String,String>();

String KEY_ITEM = "item";
String KEY_ID = "id";
test.put(KEY_ITEM, "value");
test.put(KEY_ID, "value");

SortedSet<String> keys = new TreeSet<String>(test.keySet());

答案 2 :(得分:0)

您有两种方法可以实现这一目标:

a。使用HashMap但将keySet转换为TreeSet

SortedSet<String> keys = new TreeSet<String>(map.keySet());

b。使用TreeMap代替,当您输入任何条目时,其键已经排序:

public static void main(String[] args){
    Map<String,String>map =new TreeMap<>();
    map.put("F", "F");
    map.put("C", "C");
    map.put("A", "A");
    map.put("ABC", "ABC");
    map.put("AB", "AB");
    Set<String> set=map.keySet();//been sorted      
    for (String key : set) { 
            System.out.println(map.get(key));
    }
}

输出:

A
AB
ABC
C
F