我希望能够按键对下面的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";
答案 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