`
xiaoyongzeng
  • 浏览: 14962 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

MAP集合按需排序

 
阅读更多
   在编程的过程中,有时会遇到需要对MAP集合进行排序的现象,比如像下面这种情况:

List<Map<String,Object>> l = new ArrayList<Map<String,Object>>();
Map<String, Object> ma = new HashMap<String,Object>();
ma.put("num", 22);
ma.put("cc", "cc");
l.add(ma);
ma = new HashMap<String,Object>();
ma.put("num", 33);
ma.put("cc", "dd");
l.add(ma);


   现在需要对集合L中的MAP对象按KEY值‘num'的大小进行排序,经查,现有的API中的Collections.sort方法不支持MAP类的集合排序,怎么办呢,自己写个排序类,实现Comparator接口的compare方法即可,简单的CODE如下:
class SortMap implements Comparator{
	
	private String sortName = null;
	private String compareType = "int";
	public SortMap(String sortName,String compareType){
		this.sortName = sortName;
		this.compareType = compareType;
	}

	@Override
	public int compare(Object o1, Object o2) {
		Map m1 = (Map)o1;
		Map m2 = (Map)o2;
		if(compareType.equalsIgnoreCase("int")){
			Integer ia = (Integer)m1.get(sortName);
			Integer ib = (Integer)m2.get(sortName);
			return ia.compareTo(ib);
		}else{
			String ia = (String)m1.get(sortName);
			String ib = (String)m2.get(sortName);
			return ia.compareTo(ib);
		}
	}
	
}

 
   好了,我们再来写个测试类,

public class TestMapSort<T> {

	@SuppressWarnings("unchecked")
	public void sort(){
		
		List<Map<String,Object>> l = new ArrayList<Map<String,Object>>();
		Map<String, Object> ma = new HashMap<String,Object>();
		ma.put("num", 22);
		ma.put("cc", "cc");
		l.add(ma);
		ma = new HashMap<String,Object>();
		ma.put("num", 33);
		ma.put("cc", "dd");
		l.add(ma);
		
		ma = new HashMap<String,Object>();
		ma.put("num", 11);
		ma.put("cc", "aaa");
		l.add(ma);
		
		ma = new HashMap<String,Object>();
		ma.put("num", 10);
		ma.put("cc", "bbbb");
		l.add(ma);

		SortMap sm = new SortMap("num","int");
		Collections.sort(l,sm);
		for(Map<String,Object> m : l){
			System.out.println("---------each map-----------");
			Set<Map.Entry<String, Object>>  st = m.entrySet();
			for(Entry<String, Object> entry : st){
				 System.out.print("key: "+entry.getKey() +"    ");  
			     System.out.println(entry.getValue());
			}
		}
		
	}
	
	public static void main(String[] arg){
		TestMapSort ts = new TestMapSort();
		ts.sort();
	}
	
}



运行结果如下:
---------each map-----------
key: num    10
key: cc    bbbb
---------each map-----------
key: num    11
key: cc    aaa
---------each map-----------
key: num    22
key: cc    cc
---------each map-----------
key: num    33
key: cc    dd



分享到:
评论

相关推荐

    java中Map集合的排序方法

    Map中元素存放是无序的 HashMap注意事项: 1,HashMap底层维护一个数组,我们向HashMap中所放置的对象实际上是存储在该数组当中; 2,当向HashMap中put一对键值时,它会根据key的hashCode值计算出一个位置,该位置...

    Java Map按键排序和按值排序

    Map是一种键值对的集合,它可以按照键或值进行排序。下面,我们将详细地介绍Java Map的按键排序和按值排序。 按键排序(sort by key) Java中的TreeMap,V&gt;类可以实现Map的按键排序。TreeMap,V&gt;是一个基于红黑树的...

    java map 集合 排序

    本文将深入探讨Java Map集合的排序方法。 一、TreeMap:自动排序 1. **TreeMap** 是一个基于红黑树实现的Map,它会自动根据键的自然顺序或自定义比较器进行排序。例如: ```java import java.util.TreeMap; ...

    Java Map 按值排序

    本文将详细介绍如何在Java中实现Map按值排序的几种方法。 1. 使用TreeMap TreeMap是Java中实现Map接口的一个类,它内部使用红黑树数据结构,可以按照键或值自然排序。如果我们要根据值排序,可以在创建TreeMap时...

    对Map的key和value进行排序

    Map是Java集合框架中的一种数据结构,用于存储键值对。然而,在实际应用中,我们经常需要对Map中的key或value进行排序,以满足特定的业务需求。 对Map中的key进行排序 对Map中的key进行排序可以使用TreeMap来实现...

    对Map按key和value分别排序

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

    map集合以及IO流

    本文将深入探讨`Map`集合的特性和遍历方式,以及`Set`特性的排序,并介绍如何使用`IO流`,特别是字节流和字符流。 首先,我们来了解`Map`集合的基本概念。`Map`接口是Java集合框架的一部分,它不直接继承自`...

    Map集合笔记

    ### Map集合概述与特点 #### 一、Map集合的特点及概念 Map集合是Java集合框架中的重要组成部分之一,主要用于存储键值对(key-value pairs)。它与Collection接口不同,Collection接口用于存储单个对象,而Map接口...

    Java Map 集合类简介

    【Java Map 集合类简介】 在Java的`java.util`包中,集合类扮演着重要的角色,其中List和Map是最为常见的两种。List的实现例如ArrayList和Vector,它们都是可变大小的列表,适合存储和操作各种类型对象的序列。特别...

    java中map集合的用法

    Map集合不同于List,因为它不维护元素的顺序,而是通过键来访问其对应的值。本文将详细介绍Java中Map集合的用法。 **1. Map接口概述** Map接口位于`java.util`包下,它定义了一些基本的操作方法,如put、get、...

    java 集合分组与排序

    本话题将重点关注集合的分组和排序,这是处理数据时常见的需求。Java集合框架中的`List`接口和数组(Array)是两种常用的数据结构,它们在处理数据时各有优势。下面我们将深入探讨如何在Java中实现集合的分组与排序...

    List&lt;map&gt;多字段组合排序

    List&lt;map&gt;,List&lt;Map, Object&gt;&gt;,多字段组合排序。提供一个简易的思路,如果需要进行参考。

    Activity 间intent传递有序排序的map集合

    在这个场景中,我们关注的是如何在Activity之间通过Intent传递一个有序且可排序的Map集合。理解这个知识点对于优化应用的数据传输流程至关重要。 首先,Map接口在Java中提供了若干实现类,如HashMap、LinkedHashMap...

    Java集合排序及java集合类详解

    在Java集合排序方面,我们主要关注List和Map。对于List,可以使用Collections.sort()方法进行排序,这个方法默认使用元素的自然顺序,如果元素是自定义对象,需要实现Comparable接口或者提供Comparator。对于Map,...

    重要知识java中map集合的用法.pdf

    每种实现类都有其特点和优点,例如 `HashMap` 是最常用的 Map 实现类,`TreeMap` 是一种排序的 Map 实现类等。 Map 接口和方法 Map 接口定义了四种类型的方法,包括 `equals()`、`hashCode()`、`put()`、`remove()...

    Java集合排序及java集合类详解(Collection、List、Map、Set).doc

    Java集合排序及java集合类详解(Collection、List、Map、Set).doc

    java集合MAP三种遍历

    本文将详细介绍Java中Map集合的三种遍历方法及其应用场景、优缺点等,帮助读者更好地理解和掌握Map的使用技巧。 ### 一、Map简介 `Map`接口是Java集合框架的一部分,它提供了基于键值对的数据存储方式。常见的实现...

    Map集合的继承关系图.pdf

    Map集合是一个非常重要的部分,它是以键值对(key-value pairs)的形式存储数据的接口。Map接口在java.util包中,并且提供了将键映射到值的对象。这些键不能重复,每个键最多映射到一个值。Map集合不是Collection的...

    Java集合排序及java集合类详解.pdf

    ### Java集合排序及Java集合类详解 #### 一、集合框架概述 集合框架是Java编程语言的核心组件之一,用于组织和操作数据集。Java集合框架提供了多种数据结构,包括列表(List)、集(Set)和映射(Map),这些数据结构...

    java map集合

    Java中的Map集合是一种存储键值对的数据结构,它允许我们通过键来查找对应的值,而键在Map中必须是唯一的。Map接口是Java Collections Framework的重要组成部分,提供了多种实现类,如HashMap、TreeMap、...

Global site tag (gtag.js) - Google Analytics