原文地址:
http://kunling123.blog.163.com/blog/static/89909082010256312806/
做项目的时候经常遇到要将Map排序,TreeMap和SortedMap本身支持排序功能,而HashMap本身是不支持排序的,因此有必要自定义排序。
废话少说,要实现自定义排序,首先要实现Comparator接口。
Java代码
- import java.util.Comparator;
-
- public class KeyComparator implements Comparator<Object> {
-
- public int compare(Object arg0, Object arg1) {
- int muti0 = (Integer) arg0;
- int muti1 = (Integer) arg1;
- if (muti0 < muti1) {
- return 1;
- } else {
- return 0;
- }
- }
-
- }
然后写一个测试类,实现HashMap按value排序。
Java代码
- public class Test{
- public static void main(String[] args){
- KeyComparator com = new KeyComparator();
- Map<String,Integer> map = new HashMap<String,Integer>();
- map.put("a",3);
- map.put("b",1);
- map.put("c",2);
- List<Integer> list = new ArrayList<Integer>(map.values());
- Collections.sort(list,com);
- for(Map.Entry<String,Integer> entry:map.entrySet){
- System.out.println(entry.getValue());
- }
- }
- }
输出结果为: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进行排序是Java编程中非常重要的一部分。Map是Java集合框架中的一种数据结构,用于存储键值对。然而,在实际应用中,我们经常需要对Map中的key或value进行排序,以满足...
"对 Map 按 key 和 value 分别排序" 摘要:本文主要介绍了 Map 按 key 和 value 分别排序的方法,包括使用 TreeMap 的 key 排序和 value 排序两种方式。 Map 按 key 排序 Map 是键值对的集合接口,它的实现类主要...
Java8 Stream 操作 Map 根据 Key 或 Value 排序的实现 Java8 中的 Stream 操作为开发者提供了简洁高效的数据处理方式,今天我们将介绍如何使用 Java8 Stream 操作 Map 根据 Key 或 Value 排序的实现。 Map 根据 ...
当需要对Map中的数据进行排序时,通常有两种情况:按key排序和按value排序。本文将详细介绍如何在Android环境下对Map进行这两种排序。 首先,我们来讨论按key排序。TreeMap是一个基于红黑树实现的Map,它可以根据...
Map接口不直接支持排序,但是Java提供了一些实现了SortedMap接口的类,如TreeMap,它会按照键(Key)的自然顺序或者自定义比较器(Comparator)进行排序。但是,对于已经创建的HashMap或其他非排序Map,我们不能直接...
标题中提到的“JCF(List、Set、Map)学习,实现了<key,value>按value排序”是一个关键点,我们将深入探讨这个话题。 首先,让我们了解List、Set和Map的区别。List是有序的集合,允许重复元素,并且可以保持插入顺序...
Java Map按键排序和按值排序 Java Map按键排序和按值排序是Java编程语言中常用的数据结构之一。Map是一种键值对的集合,它可以按照键或值进行排序。下面,我们将详细地介绍Java Map的按键排序和按值排序。 按键...
本文将探讨如何通过对VALUE排序HashMap,并分析相关源代码。 HashMap本身并不支持对值的排序,因为它内部使用哈希表实现,主要关注的是键的哈希计算和冲突解决,而不是元素的顺序。如果需要对HashMap的值进行排序,...
一种常见做法是先将Map的entrySet转换为List,然后使用`Collections.sort()`方法,传入一个Comparator来按value排序。 - 下面的示例展示了如何实现value排序: ```java List<Map.Entry, String>> list = new ...
以下是关于Java Map按照Value排序的实现方法的详细说明: 1. **HashMap**: - HashMap是基于哈希表实现的,它不保证元素的顺序,插入顺序和遍历顺序可能不同,而且不支持排序。 2. **TreeMap**: - TreeMap基于...
在提供的代码中,可以看到一个名为`getSortJson`的方法,它接受一个JSONObject作为参数,并返回一个新的按key排序后的JSONObject。这个方法的具体步骤如下: 1. 使用`Iterator<String> iteratorKeys = json.keys();...
然而,在某些场景下,我们可能需要将Map中的元素按照值(value)进行排序。本文将详细介绍如何在Java中实现Map按值排序的几种方法。 1. 使用TreeMap TreeMap是Java中实现Map接口的一个类,它内部使用红黑树数据结构...
Java中对List<Map>根据Map某个key值进行排序的方法 在 Java 中,排序是一个非常常见的操作,特别是在处理 List 集合时。当我们需要根据 Map 中的某个 key 值对 List 集合进行排序时,需要使用Comparator接口来实现...
本文将详细介绍如何实现`Map`按照值(value)升序排序以及按照键(key)排序。 首先,我们需要了解`Map`的基本概念。`Map`接口是Java集合框架的一部分,它定义了键值对的存储和访问方法。常见的`Map`实现有`HashMap...
TreeMap内部基于红黑树数据结构,能够保证Map的Key按照自然顺序或者自定义的Comparator进行排序。但是,对于HashMap、LinkedHashMap等其他Map实现类,它们并不保证元素的顺序。因此,如果需要对HashMap进行排序,...
这里我们将探讨如何在Java中实现按值排序的Map,特别关注“按值排序”这一需求。 首先,标准的SortedMap接口是根据键(key)进行排序的,例如TreeMap就是一种按键升序排序的实现。因此,如果想按值排序,我们需要...
- 有序map在后端处理时,可以方便地进行有序遍历,例如在循环中按顺序访问key。这在处理一些需要按照特定顺序执行的操作时非常有用,比如迭代处理数据、渲染模板等。 ```go for _, key := range om.Order() { // ...
支持一个List<Map>按照MAP中的一个或者多个Key的value值的中英文来排序,自动识别字符和数字(包括[a-zA-z]?[0-9]*)排序
std::map, int> myMap(keyValuePairs.begin(), keyValuePairs.end()); ``` ### 2. STL Map 的排序 `map`内部自动保持元素的排序,这是因为它的底层实现是红黑树。在`map`中,排序是基于键(key)的比较。默认情况...