我想能够按键对下面的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";
您正在使用"HashMap"调用"keySet()"方法,就好像这是一个静态方法一样。您需要在map对象上调用"keySet()"方法,但不能通过类调用。
更改此
SortedSet<String> keys = new TreeSet<String>(HashMap.keySet());
到这个
SortedSet<String> keys = new TreeSet<String>(map.keySet());
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());
有两种方法可以实现这一点:
a.使用HashMap
,但将密钥集转换为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