[英]find key with highest value in HashMap<String,Double> using lambdaj (java)
[英]How to find highest key value from hashmap
迭代最大键值,以便它将替换最大字符串值。 我的代码是
HashMap<String, String> mapp=new HashMap<String, String>();
mapp.put("ab","blue");
mapp.put("abc","black");
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_);
}
}
我想用最大键值迭代意味着键值“abcd”应首先迭代然后“abc”然后“ab”。
以下是使用Collections.max()的示例。 如果您想要自定义排序,也可以传递比较器。
HashMap<String, String> mapp=new HashMap<String, String>();
mapp.put("ab","blue");
mapp.put("abc","black");
mapp.put("abcd","pink");
// find max key alphabetically
String maxKey = Collections.max(mapp.keySet());
Comparator<String> strLenCmp = new Comparator<String>() {
@Override
public int compare(String o1, String o2) {
return Integer.compare(o1.length(), o2.length());
}
};
// find max key by key length
String longKey = Collections.max(mapp.keySet(), strLenCmp);
编辑 :添加自定义Comparator的示例
使用泛型,摆脱铸造。 这会很好地整理你的代码。
您将需要一个自定义比较器来进行排序。
一旦你有比较器,你有两个选择:
选项1:
创建一个ArrayList,将地图中的所有键转储到其中。
对ArrayList进行排序,遍历已排序的ArrayList。
选项2:
使用TreeMap存储数据。
尝试使用TreeMap而不是HashMap,它有获取最后一个条目的方法,它将为您提供具有最高键值的条目。 即使在TreeMap中,如果您传递自定义比较器,那么它将以一种方式排序,您将获得具有最大值的键,因此您不必担心它。
请参阅此链接和lastEntry方法。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.