基于键对哈希映射进行排序

2022-08-31 11:26:24

我在java中有以下哈希映射:

{B046=0.0, A061=3.0, A071=0.0, B085=0.0, B075=3.0, B076=9.0, B086=3.0, B095=0.0, B096=0.0, A052=0.0, B066=0.0, B056=9.0, B065=0.0, B055=9.0}

我应该如何对哈希图进行排序,以便将字母表,然后是数字考虑在内?

生成的哈希映射应如下所示:

{A052=0.0,A061=3.0,A071=0.0,B046=0.0,B055=9.0,B056=9.0,B065=0.0,B066=0.0,B075=3.0,B076=9.0,B085=0.0,B086=3.0,B095=0.0,B096=0.0}

感谢您的帮助!


答案 1

使用排序 :TreeMap

Map<String, Float> map = new TreeMap<>(yourMap);

它将自动放置按键排序的条目。我认为自然排序在你的情况下会很好。String

请注意,由于查找优化不会保持顺序。HashMap


答案 2

将树状图与自定义比较器配合使用。

class MyComparator implements Comparator<String>
    {
        public int compare(String o1,String o2)
        {
            // Your logic for comparing the key strings
        }
    }

TreeMap<String, Float> tm = new TreeMap<String , Float>(new MyComparator());

添加新元素时,它们将自动排序。

在您的情况下,甚至可能不需要实现比较器,因为字符串排序可能就足够了。但是,如果要实现特殊情况,例如小写字母出现在大写字母之前,或者以某种方式处理数字,请使用比较器。