java如何在hashmap中首先迭代最大键字符串值
我想先迭代最大键值。我的密码在这里。我有一些有价值的hashmap。我想先迭代最大键值,以便按照我的代码,它将首先替换最大键值
HashMap<String, String> mapp=new HashMap<String, String>();
mapp.put("ab","blue");
mapp.put("abc","black");
mapp.put("abcdef","green");
mapp.put("abcd","pink");
for (Iterator it = alltyp.iterator(); it.hasNext();) {
String finalstring = (String) it.next();
Iterator it1=mapp.entrySet().iterator();
while(it1.hasNext())
{
Map.Entry pairs = (Map.Entry) it1.next();
String key_ = (String) pairs.getKey();
String value_ = (String) pairs.getValue();
finalstring = finalstring.replaceAll(key_, value_);
}
}
首先,它将迭代键值“abcdef”,然后是“abcd”,然后是“abc”,最后是“ab”。现在在while循环中,它将首先取代“abcdef”。 请给我你的建议
# 1 楼答案
使用
TreeMap
对象而不是HashMap
在
TreeMap
上迭代将按升序给出键。只需在迭代时将这些值放入堆栈中,然后逐个弹出它们,然后瞧,现在您的键按降序排列# 2 楼答案
可以直接通过TreeMap完成;您只需要传递自己的比较器,它按长度降序排列键
我在博客上详细讨论了比较器here