根据键对hashmap进行sorting

我在java中有以下hashmap:

B056 = 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}

我应该如何sorting哈希映射,使字母,数字后面的数字考虑在内?

得到的哈希映射应该如下所示:

{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}

感谢帮助!

使用sorting的TreeMap

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

它会自动把条目按键sorting。 我觉得自然的Stringsorting在你的情况下会很好。

请注意,由于查找优化而导致的HashMap不能保持顺序。

使用具有自定义比较器的TreeMap。

 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()); 

当你添加新的元素,他们将被自动sorting。

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

TreeMap是你最好的select这种sorting(自然)。 TreeMap根据键自然sorting。

HashMap不保留插入顺序,也不sorting映射。 LinkedHashMap保留插入顺序,但不会自动对地图进行sorting。 只有Map接口中的TreeMap按照自然顺序(数字第一,大写字母第二,小写字母最后)对Mapsorting。

使用TreeMap ,虽然有一个“看起来像这样的地图”有点模糊 – 你也可以根据你的标准对键进行sorting,然后遍历地图,检索每个对象。

只需使用一个TreeMap 。 它实现SortedMap接口,从而自动分类它包含的键。 您的密钥可以按字母顺序sorting以获得所需的结果,因此您甚至不需要提供比较器。

哈希映射从不sorting。 你唯一要做的就是使用HashMap获取所有的键值,并将它们存储在一个有序集合或一个List中,然后对List进行sorting。

使用TreeMap可以对Map进行sorting。

 Map<String, String> map = new HashMap<String, String>(); Map<String, String> treeMap = new TreeMap<String, String>(map); //show hashmap after the sort for (String str : treeMap.keySet()) { System.out.println(str); } 

你可以使用TreeMap来存储sorting后的值。

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