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

一. 理论准备

Map是键值对的集合接口,它的实现类主要包括:HashMap,TreeMap,Hashtable以及LinkedHashMap等。

TreeMap:基于红黑树(Red-Black tree)的 NavigableMap 实现,该映射根据其键的自然顺序进行排序,或者根据创建映射时提供的 Comparator 进行排序,具体取决于使用的构造方法。

HashMap的值是没有顺序的,它是按照key的HashCode来实现的,对于这个无序的HashMap我们要怎么来实现排序呢?参照TreeMap的value排序。

Map.Entry返回Collections视图。

二. key排序

TreeMap默认是升序的,如果我们需要改变排序方式,则需要使用比较器:Comparator。Comparator可以对集合对象或者数组进行排序的比较器接口,实现该接口的public compare(T o1,To2)方法即可实现排序,如下:

import java.util.Comparator; import java.util.Iterator; import java.util.Map; import java.util.Set; import java.util.TreeMap; public class TreeMapTest { public static void main(String[] args) { Map<String, String> map = new TreeMap<String, String>( new Comparator<String>() { public int compare(String obj1, String obj2) { // 降序排序 return obj2.compareTo(obj1); } }); map.put("b", "ccccc"); map.put("d", "aaaaa"); map.put("c", "bbbbb"); map.put("a", "ddddd"); Set<String> keySet = map.keySet(); Iterator<String> iter = keySet.iterator(); while (iter.hasNext()) { String key = iter.next(); System.out.println(key + ":" + map.get(key)); } } }

运行结果如下:

d:aaaaa c:bbbbb b:ccccc a:ddddd

三. value排序

上面例子是对根据TreeMap的key值来进行排序的,但是有时我们需要根据TreeMap的value来进行排序。对value排序我们就需要借助于Collections的sort(List<T> list, Comparator<? super T> c)方法,该方法根据指定比较器产生的顺序对指定列表进行排序。但是有一个前提条件,那就是所有的元素都必须能够根据所提供的比较器来进行比较,如下:

import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; import java.util.List; import java.util.Map; import java.util.Map.Entry; import java.util.TreeMap; public class TreeMapTest { public static void main(String[] args) { Map<String, String> map = new TreeMap<String, String>(); map.put("a", "ddddd"); map.put("c", "bbbbb"); map.put("d", "aaaaa"); map.put("b", "ccccc"); //这里将map.entrySet()转换成list List<Map.Entry<String,String>> list = new ArrayList<Map.Entry<String,String>>(map.entrySet()); //然后通过比较器来实现排序 Collections.sort(list,new Comparator<Map.Entry<String,String>>() { //升序排序 public int compare(Entry<String, String> o1, Entry<String, String> o2) { return o1.getValue().compareTo(o2.getValue()); } }); for(Map.Entry<String,String> mapping:list){ System.out.println(mapping.getKey()+":"+mapping.getValue()); } } }

运行结果如下:

d:aaaaa c:bbbbb b:ccccc a:ddddd

以上就是小编为大家带来的Android 对Map按key和value分别排序的实例全部内容了,希望大家多多支持脚本之家~

时间: 2024-10-28 21:15:47

Android 对Map按key和value分别排序的实例的相关文章

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

一. 理论准备 Map是键值对的集合接口,它的实现类主要包括:HashMap,TreeMap,Hashtable以及LinkedHashMap等. TreeMap:基于红黑树(Red-Black tree)的 NavigableMap 实现,该映射根据其键的自然顺序进行排序,或者根据创建映射时提供的 Comparator 进行排序,具体取决于使用的构造方法. HashMap的值是没有顺序的,它是按照key的HashCode来实现的,对于这个无序的HashMap我们要怎么来实现排序呢?参照Tree

对Map按key和value分别排序

一.理论准备         Map是键值对的集合接口,它的实现类主要包括:HashMap,TreeMap,Hashtable以及LinkedHashMap等.         TreeMap:基于红黑树(Red-Black tree)的 NavigableMap 实现,该映射根据其键的自然顺序进行排序,或者根据创建映射时提供的 Comparator 进行排序,具体取决于使用的构造方法.         HashMap的值是没有顺序的,它是按照key的HashCode来实现的,对于这个无序的Ha

android map如何获得Google Map API key

首先要做的是获取一个MD5 key(当然,他是通过JDK的keytool工具(keytool.exe)实现的) 1.在这里,主要有两方面的工作 keytool.debug.keystore 2.首先,找到debug.keystore!(进入Eclipse开发环境,然后选择Window-->Preferences-->Android-->Build,这时候我们可以看到界面中的Default debug keystore,它后面方框中的内容就是debug.keystore的路径).在此,我们

申请google android map api key

申请google android map api key 网上找到的老外的一篇申请android map api key的文章.原文连接在这里.  文章内容如下: The Maps API Key   The MapView class in the Maps external library lets you integrate Google Maps into your application. BecauseMapView gives you access to Google Maps d

(6)Xamarin.android google map v2

原文 Xamarin.android google map v2 Google Map v1已经在2013年的3月开始停止支持了,目前若要在你的Android手机上使用到Google Map,就必须要使用到Google Map v2的版本.在Xamarin要使用Google Map v2之前,必需要做的动作有下列几项: 从你计算机里的keystore里面查询个人的指纹凭证(SHA1). 用SHA1指纹凭证到Google APIs网站申请key. 在Xamarin里的Android SDK Man

android google map 程序中怎么获取mapkey,急需求救

问题描述 android google map 程序中怎么获取mapkey,急需求救 在网上找了很多教程但是给的网站翻墙后还是不存在. 在这个:https://developers.google.com/maps/signup?hl=zh-CN没有找到需要输入指纹的keytool. 我把别人写好的程序拿过来到我的机子上运行还是不行,我查看了确实安装了google api,但是还是才出现很多错误,求人指点,感激不尽!!!!!!!!!!!!! 解决方案 http://www.cnblogs.com/

map中 key,value 对换 ,互换,

当查询一些数据需要去重复的时候,有很多人想到用map自带的属性去重,因为不允许有相同的key存在,但是可以允许有相同的value存在. 例如:我想得到 手机通讯录 中所有的电话号码和姓名(是去重后的手机号码,不存在相同的两个电话号码) 一部手机里面有    我的电话:152****5398    (2个)         姓名 1      :李白白                   姓名 2  :李黑黑   你的电话:188****8888  (1个)         姓名 1      

Map 按key和value 排序

Map的排序常分为两种情况,1.按key值排序:2.按value排序    默认的情况下,TreeMap:是按key升序,进行排序的:LinkedHashMap:是按加入顺序进行排序的:HashMap:内部数值的顺序并不是以存放的先后顺序为主,而是以hash值的顺序为主,其次才是存放的先后顺序.     1.我们先讨论按key值进行排序 我们先看一下这个Sorter类: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 pub

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

一.理论准备 Map是键值对的集合接口,它的实现类主要包括:HashMap,TreeMap,Hashtable以及LinkedHashMap等. TreeMap:基于红黑树(Red-Black tree)的 NavigableMap 实现,该映射根据其键的自然顺序进行排序,或者根据创建映射时提供的 Comparator 进行排序,具体取决于使用的构造方法. HashMap的值是没有顺序的,它是按照key的HashCode来实现的,对于这个无序的HashMap我们要怎么来实现排序呢?参照TreeM