java Map 自定义排序(高手来)

我现在又这样一个map的方法
public Map getMap()
{
Map searchmap = new HashMap();

searchmap.put("mingcheng", "实验室名称");
searchmap.put("fuzeren", "负责人");
return searchmap;
}

问:我要怎么才能让他倒序排序输出(也就是先输出“mingcheng”)

HashMap是不保证顺序的,要有顺序,要用LinkedHashMap。这是按照插入的顺序排列的。

api:Map 接口的哈希表和链接列表实现,具有可预知的迭代顺序。此实现与 HashMap 的不同之处在于,后者维护着一个运行于所有条目的双重链接列表。此链接列表定义了迭代顺序,该迭代顺序通常就是将键插入到映射中的顺序(插入顺序)。注意,如果在映射中重新插入 键,则插入顺序不受影响。(如果在调用 m.put(k, v) 前 m.containsKey(k) 返回了 true,则调用时会将键 k 重新插入到映射 m 中。)

此实现可以让客户避免未指定的、由 HashMap(及 Hashtable)所提供的通常为杂乱无章的排序工作,同时无需增加与 TreeMap 相关的成本。使用它可以生成一个与原来顺序相同的映射副本,而与原映射的实现无关:

void foo(Map m) {
Map copy = new LinkedHashMap(m);
...
}
如果模块通过输入得到一个映射,复制这个映射,然后返回由此副本确定其顺序的结果,这种情况下这项技术特别有用。(客户通常期望返回的内容与其出现的顺序相同。)
温馨提示:答案为网友推荐,仅供参考
第1个回答  2010-01-20
假设你的方法在Test类中,以下代码就是倒序输出:
Test t = new Test();
Map m = t.getMap();
Set s = m.keySet();
Iterator i = s.iterator();
while(i.hasNext()){
System.out.println(i.next());
}
第2个回答  2010-01-20
继承一个实在的Map类
重写hashCode() 方法
第3个回答  2010-01-20
从searchMap中都取出来,放入一个treeMap中,这个treeMap在new的时候需要传一个comperator,自己爱怎么比都行
第4个回答  2010-01-20
用LinkedHashmap 带顺序的 迭代取出时也是那个顺序
相似回答