对Map的key和value进行排序

1.1.  对集合中的key进行排序

1.1.1.  
实例:对字符串形式的key进行自然逆序排序


SortMapKey.java

package map;

import java.util.Comparator;

import java.util.LinkedHashMap;

import java.util.Map;

import java.util.Set;

import java.util.TreeMap;

public class SortMapKey {

    public static void main(String[] args) {

       Map<String,String> map = new TreeMap<String,String>(new Comparator<String>() {

           public int compare(String key1, String key2) {

              return key2.compareTo(key1);

              }

       });

       //map.put(null, null);

       map.put("aa", null);

       map.put("bb", "123");

       map.put("dd", "456");

       map.put("cc", "789");

       Set<String> keySet = map.keySet();

       for (String key : keySet) {

           System.out.println(key + ":" + map.get(key));

       }

    }

}

输出结果:

dd:456

cc:789

bb:123

aa:null

1.2.  对Map中的value进行排序

1.2.1.  
实例:对Map中日期格式的值排序


SortMapValue.java

package map;

import java.text.SimpleDateFormat;

import java.util.Calendar;

import java.util.Comparator;

import java.util.Date;

import java.util.HashMap;

import java.util.Map;

import java.util.Set;

import java.util.TreeMap;

publicclass SorMaptValue {

    publicstaticvoid main(String[] args) {

       Map<String,Date> hashMap = new HashMap<String, Date>();

       Calendar calendar = Calendar.getInstance();

       calendar.add(Calendar.DATE, -1);

       hashMap.put("昨天", calendar.getTime());

       calendar.add(Calendar.DATE, 1);

       hashMap.put("今天", calendar.getTime());

       calendar.add(Calendar.DATE, 1);

       hashMap.put("明天", calendar.getTime());

       SortValueComparator svc = new SortValueComparator(hashMap);

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

       map.putAll(hashMap);

       Set<String> keySet = map.keySet();

       SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");

       for (String key : keySet) {

           System.out.println(key + ":" + sdf.format(hashMap.get(key)));

       }

    }

}

class SortValueComparator implements Comparator<String>{

    private Map<String,Date> map ;

    public SortValueComparator(Map<String,Date> map) {

       this.map = map;

    }

    publicint compare(String o1, String o2) {

       boolean flag = map.get(o1).before(map.get(o2));

       if(flag){

           return 1;

       }else{

           return -1;

       }

    }

}

运行结果如下:

明天:2015-02-01

今天:2015-01-31

昨天:2015-01-30

时间: 2024-12-22 14:40:05

对Map的key和value进行排序的相关文章

对Map按key和value分别排序

一.什么是Map? 在讲解Map排序之前,我们先来稍微了解下map. map是键值对的集合接口,它的实现类主要包括:HashMap,TreeMap,Hashtable以及LinkedHashMap等.其中这四者的区别如下(简单介绍): HashMap:我们最常用的Map,它根据key的HashCode 值来存储数据,根据key可以直接获取它的Value,同时它具有很快的访问速度.HashMap最多只允许一条记录的key值为Null(多条会覆盖);允许多条记录的Value为 Null.非同步的.

java统计List中的元素重复出现的次数和对map按key或键值排序

package cn.php; import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; import java.util.Comparator; import java.util.HashMap; import java.util.HashSet; import java.util.LinkedHashMap; import java.util.List; import java.uti

Java Map按照Key和Value排序【转】

package kingtool.sort; import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; import java.util.Iterator; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; import java.util.TreeMap; import jav

C++基础之map按key排序

在项目当中有要用到map按key排序的需求,就在百度上搜了一下: typedef pair<int,int> PAIR; int cmp(const PAIR& x, const PAIR& y) { return x.second < y.second; } map<int,int> imgdis; //待排序对象,根据double值排序 imgdis[1] = 3; imgdis[10] = 1; imgdis[3] = 5; imgdis[12] = 4

c++ map按key或value的值分别进行排序

一.对key值进行特定的排序 map容器里面有两个值一个key一个是value,map<key,value>,其实map里面还有第三个参数,是一个类,用来对map的key进行排序的类,定义如下 template<class _Kty, class _Ty, class _Pr = less<_Kty>, class _Alloc = allocator<pair<const _Kty, _Ty> > > class map less<_Kt

map 按key排序 按value排序

http://blog.csdn.net/iicy266/article/details/11906189 这篇文章很好,提醒我们熟悉函数原型的重要性 map 按key排序 按value排序,码迷,mamicode.com

Java Map按键(Key)排序和按值(Value)排序

Map排序的方式有很多种,两种比较常用的方式:按键排序(sort by key), 按值排序(sort by value).1.按键排序jdk内置的java.util包下的TreeMap<K,V>既可满足此类需求,向其构造方法 TreeMap(Comparator<? super K> comparator)  传入我们自定义的比较器即可实现按键排序. Java代码   public class MapSortDemo { public static void main(Strin

STL map 按key值和按value值排序

map是用来存放<key, value>键值对的数据结构,能够非常方便高速的依据key查到对应的value. 假如存储水果和其单位价格.我们用map来进行存储就是个不错的选择. 我们这样定义.map<string, double>.当中水果用string类型.作为Key:该水果的单位价格用double类型,作为value. 这样一来,我们能够依据水果名高速的查找到价格. 我们不仅要将水果和相应的价格输出,还想知道依照价格高低进行排序的结果. 换句话说,我们希望可以对map进行按Ke

Java Map 按Key排序和按Value排序

package test; import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; import java.util.HashMap; import java.util.Iterator; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; import java.util.Tr