Java:Hashmap排序根据key或者value——利用Arraylist

笔者说:“ 以下代码为笔者大学期间Java的学习记录,谨以此记录我的学习历程,重要之处皆有注释,若有疑问大可评论区留言。”

Hashmap

HashMap 是一个散列表,它存储的内容是键值对(key-value)映射

HashMap 实现了 Map 接口,根据键的 HashCode 值存储数据,具有很快的访问速度,最多允许一条记录的键为 null,不支持线程同步。

但HashMap 是无序的,即不会记录插入的顺序。

HashMap 继承于AbstractMap,实现了 Map、Cloneable、java.io.Serializable 接口。

Hashmap排序

Hashmap的排序有许多种方法,Treemap、Arraylist等,本文将主要介绍利用Arraylist的方法。
通过Arraylist进行Hashmap的按键(key)排序或者按值(value)排序有以下步骤:

  • 新建Arraylist并且将Hashmap中的键值对的映射转移至Arraylist中

    Map.Entry<>表示Map中的一个实体(一个key-value对),它可以提供Hashmap中的键值队映射
    Map.Entry里面包含getKey()和getValue()方法

    例:

List<Map.Entry<String,Integer>> lst =new ArrayList<Map.Entry<String, Integer>>(wordmap.entrySet()) ;
  • 重写Comparator中的compare方法完成比较
        Collections.sort(lst, new Comparator<Map.Entry<String, Integer>>() {
            @Override
            public int compare(Map.Entry<String, Integer> o1, Map.Entry<String, Integer> o2) {
            if(o1.getValue()>o2.getValue()) return -1;
            if(o1.getValue()<o2.getValue()) return 1;
                return 0;
            }
        });

版权声明:本文为wjhauannn原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。