`
习惯在马桶上思考
  • 浏览: 114855 次
  • 性别: Icon_minigender_2
  • 来自: 杭州
社区版块
存档分类
最新评论

(转)Map按Key或者Value排序

    博客分类:
  • JAVA
阅读更多

 

原文地址:

http://kunling123.blog.163.com/blog/static/89909082010256312806/

做项目的时候经常遇到要将Map排序,TreeMap和SortedMap本身支持排序功能,而HashMap本身是不支持排序的,因此有必要自定义排序。

    废话少说,要实现自定义排序,首先要实现Comparator接口。

Java代码

 

  1. import java.util.Comparator;   
  2.   
  3. public class KeyComparator implements Comparator<Object> {   
  4.   
  5.     public int compare(Object arg0, Object arg1) {   
  6.         int muti0 = (Integer) arg0;   
  7.         int muti1 = (Integer) arg1;   
  8.         if (muti0 < muti1) {   
  9.             return 1;   
  10.         } else {   
  11.             return 0;   
  12.         }   
  13.     }   
  14.   
  15. }  

 

然后写一个测试类,实现HashMap按value排序。

Java代码

 

  1. public class Test{   
  2.   public static void main(String[] args){   
  3.      KeyComparator com = new KeyComparator();   
  4.      Map<String,Integer> map = new HashMap<String,Integer>();   
  5.      map.put("a",3);   
  6.      map.put("b",1);     
  7.      map.put("c",2);   
  8.      List<Integer> list = new ArrayList<Integer>(map.values());   
  9.      Collections.sort(list,com);   
  10.      for(Map.Entry<String,Integer> entry:map.entrySet){   
  11.           System.out.println(entry.getValue());   
  12.       }   
  13.   }   
  14. }  

 

输出结果为:3,2,1

如果要实现HashMap按key进行排序,只需要修改如下代码:

int muti0 = (Integer) arg0;

int muti1 = (Integer) arg1;

修改为:

String muti0 = (String) arg0;

String muti1 = (String) arg1;

List<Integer> list = new ArrayList<Integer>(map.values());

修改为:

List<String> list = new ArrayList<String>(map.keySet());

System.out.println(entry.getValue());

修改为:

System.out.println(entry.getKey());

输出结果为:c,b,a

分享到:
评论

相关推荐

    对Map的key和value进行排序

    对Map的key和value进行排序 对Map的key和value进行排序是Java编程中非常重要的一部分。Map是Java集合框架中的一种数据结构,用于存储键值对。然而,在实际应用中,我们经常需要对Map中的key或value进行排序,以满足...

    对Map按key和value分别排序

    "对 Map 按 key 和 value 分别排序" 摘要:本文主要介绍了 Map 按 key 和 value 分别排序的方法,包括使用 TreeMap 的 key 排序和 value 排序两种方式。 Map 按 key 排序 Map 是键值对的集合接口,它的实现类主要...

    java8 stream 操作map根据key或者value排序的实现

    Java8 Stream 操作 Map 根据 Key 或 Value 排序的实现 Java8 中的 Stream 操作为开发者提供了简洁高效的数据处理方式,今天我们将介绍如何使用 Java8 Stream 操作 Map 根据 Key 或 Value 排序的实现。 Map 根据 ...

    Android 对Map按key和value分别排序的实例

    当需要对Map中的数据进行排序时,通常有两种情况:按key排序和按value排序。本文将详细介绍如何在Android环境下对Map进行这两种排序。 首先,我们来讨论按key排序。TreeMap是一个基于红黑树实现的Map,它可以根据...

    对map里面的value进行排序

    Map接口不直接支持排序,但是Java提供了一些实现了SortedMap接口的类,如TreeMap,它会按照键(Key)的自然顺序或者自定义比较器(Comparator)进行排序。但是,对于已经创建的HashMap或其他非排序Map,我们不能直接...

    JCF(List、Set、Map)学习,实现了<key,value>按value排序噢

    标题中提到的“JCF(List、Set、Map)学习,实现了&lt;key,value&gt;按value排序”是一个关键点,我们将深入探讨这个话题。 首先,让我们了解List、Set和Map的区别。List是有序的集合,允许重复元素,并且可以保持插入顺序...

    Java Map按键排序和按值排序

    Java Map按键排序和按值排序 Java Map按键排序和按值排序是Java编程语言中常用的数据结构之一。Map是一种键值对的集合,它可以按照键或值进行排序。下面,我们将详细地介绍Java Map的按键排序和按值排序。 按键...

    Hashmap 通过对VALUE排序 源代码

    本文将探讨如何通过对VALUE排序HashMap,并分析相关源代码。 HashMap本身并不支持对值的排序,因为它内部使用哈希表实现,主要关注的是键的哈希计算和冲突解决,而不是元素的顺序。如果需要对HashMap的值进行排序,...

    Java Map 按key排序和按Value排序的实现方法

    一种常见做法是先将Map的entrySet转换为List,然后使用`Collections.sort()`方法,传入一个Comparator来按value排序。 - 下面的示例展示了如何实现value排序: ```java List&lt;Map.Entry, String&gt;&gt; list = new ...

    Java Map 按照Value排序的实现方法

    以下是关于Java Map按照Value排序的实现方法的详细说明: 1. **HashMap**: - HashMap是基于哈希表实现的,它不保证元素的顺序,插入顺序和遍历顺序可能不同,而且不支持排序。 2. **TreeMap**: - TreeMap基于...

    java中对单层json进行key字母排序

    在提供的代码中,可以看到一个名为`getSortJson`的方法,它接受一个JSONObject作为参数,并返回一个新的按key排序后的JSONObject。这个方法的具体步骤如下: 1. 使用`Iterator&lt;String&gt; iteratorKeys = json.keys();...

    Java Map 按值排序

    然而,在某些场景下,我们可能需要将Map中的元素按照值(value)进行排序。本文将详细介绍如何在Java中实现Map按值排序的几种方法。 1. 使用TreeMap TreeMap是Java中实现Map接口的一个类,它内部使用红黑树数据结构...

    Java中对list map根据map某个key值进行排序的方法

    Java中对List&lt;Map&gt;根据Map某个key值进行排序的方法 在 Java 中,排序是一个非常常见的操作,特别是在处理 List 集合时。当我们需要根据 Map 中的某个 key 值对 List 集合进行排序时,需要使用Comparator接口来实现...

    map实现按value升序排序

    本文将详细介绍如何实现`Map`按照值(value)升序排序以及按照键(key)排序。 首先,我们需要了解`Map`的基本概念。`Map`接口是Java集合框架的一部分,它定义了键值对的存储和访问方法。常见的`Map`实现有`HashMap...

    Java Map 按Key排序实例代码

    TreeMap内部基于红黑树数据结构,能够保证Map的Key按照自然顺序或者自定义的Comparator进行排序。但是,对于HashMap、LinkedHashMap等其他Map实现类,它们并不保证元素的顺序。因此,如果需要对HashMap进行排序,...

    浅谈Java之Map 按值排序 (Map sort by value)

    这里我们将探讨如何在Java中实现按值排序的Map,特别关注“按值排序”这一需求。 首先,标准的SortedMap接口是根据键(key)进行排序的,例如TreeMap就是一种按键升序排序的实现。因此,如果想按值排序,我们需要...

    Go-go有序map用于json输出有序key的对象和后端有序循环map取值

    - 有序map在后端处理时,可以方便地进行有序遍历,例如在循环中按顺序访问key。这在处理一些需要按照特定顺序执行的操作时非常有用,比如迭代处理数据、渲染模板等。 ```go for _, key := range om.Order() { // ...

    List<Map>中英文排序

    支持一个List&lt;Map&gt;按照MAP中的一个或者多个Key的value值的中英文来排序,自动识别字符和数字(包括[a-zA-z]?[0-9]*)排序

    STL_map初始化和排序

    std::map, int&gt; myMap(keyValuePairs.begin(), keyValuePairs.end()); ``` ### 2. STL Map 的排序 `map`内部自动保持元素的排序,这是因为它的底层实现是红黑树。在`map`中,排序是基于键(key)的比较。默认情况...

Global site tag (gtag.js) - Google Analytics