如何从hashmap中找到最高键值

use*_*816 5 java iterator 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_);      
    }
}
Run Code Online (Sandbox Code Playgroud)

我想用最大键值迭代意味着键值"abcd"应首先迭代然后"abc"然后"ab".

Dav*_*sel 13

以下是使用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);
Run Code Online (Sandbox Code Playgroud)

编辑:添加自定义Comparator的示例


Tim*_*m B 2

使用泛型,摆脱强制转换。这会让你的代码变得更加整洁。

您将需要一个自定义比较器来进行排序。

一旦有了比较器,您就有两个选择:

选项1:

创建一个 ArrayList,将映射中的所有键转储到其中。

对 ArrayList 进行排序,迭代排序后的 ArrayList。

选项2:

使用 TreeMap 来存储数据。