一. 理论准备

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分别排序的实例全部内容了,希望大家多多支持~
# map按value排序
# Java Map 按key排序和按Value排序的实现方法
# Java中对list map根据map某个key值进行排序的方法
# java8 stream 操作map根据key或者value排序的实现
# Java Map 按Key排序实例代码
# Map按单个或多个Value排序当Value相同时按Key排序
# java中Map如何根据key的大小进行排序详解
# java中如何对Map的key顺序排序
# 来实现
# 升序
# 它是
# 所提供
# 转换成
# 主要包括
# 以对
# 小编
# 要使
# 大家多多
# 键值
# 有一个
# 前提条件
# 则需
# 红黑
# 那就是
# 降序
# 都必须
# Entry
# compare
相关文章:
如何快速搭建高效WAP手机网站吸引移动用户?
网站建设制作、微信公众号,公明人民医院怎么在网上预约?
孙琪峥织梦建站教程如何优化数据库安全?
如何通过云梦建站系统实现SEO快速优化?
如何在阿里云完成域名注册与建站?
建站之星×万网:智能建站系统+自助建站平台一键生成
外贸公司网站制作哪家好,maersk船公司官网?
大连网站制作公司哪家好一点,大连买房网站哪个好?
建站之星IIS配置教程:代码生成技巧与站点搭建指南
建站之星如何实现PC+手机+微信网站五合一建站?
网站制作的软件有哪些,制作微信公众号除了秀米还有哪些比较好用的平台?
免费制作统计图的网站有哪些,如何看待现如今年轻人买房难的情况?
如何获取PHP WAP自助建站系统源码?
宝塔新建站点为何无法访问?如何排查?
TestNG的testng.xml配置文件怎么写
建站之星免费模板:自助建站系统与智能响应式一键生成
网站制作专业公司有哪些,如何制作一个企业网站,建设网站的基本步骤有哪些?
网站制作知乎推荐,想做自己的网站用什么工具比较好?
h5网站制作工具有哪些,h5页面制作工具有哪些?
北京的网站制作公司有哪些,哪个视频网站最好?
建站之星如何实现五合一智能建站与营销推广?
宝塔新建站点报错如何解决?
如何用PHP快速搭建高效网站?分步指南
视频网站制作教程,怎么样制作优酷网的小视频?
小说建站VPS选用指南:性能对比、配置优化与建站方案解析
建站中国官网:模板定制+SEO优化+建站流程一站式指南
如何选择网络建站服务器?高效建站必看指南
如何用狗爹虚拟主机快速搭建网站?
如何自定义建站之星网站的导航菜单样式?
如何配置FTP站点权限与安全设置?
如何选择PHP开源工具快速搭建网站?
如何快速搭建高效WAP手机网站?
如何快速生成ASP一键建站模板并优化安全性?
建站org新手必看:2024最新搭建流程与模板选择技巧
深入理解Android中的xmlns:tools属性
北京网站制作公司哪家好一点,北京租房网站有哪些?
建站之星好吗?新手能否轻松上手建站?
自助网站制作软件,个人如何自助建网站?
在线ppt制作网站有哪些,请推荐几个好的课件下载的网站?
如何在云主机快速搭建网站站点?
建站之星备案流程有哪些注意事项?
免费网站制作appp,免费制作app哪个平台好?
建站之星如何助力企业快速打造五合一网站?
定制建站哪家更专业可靠?推荐榜单揭晓
在线流程图制作网站手机版,谁能推荐几个好的CG原画资源网站么?
c++如何打印函数堆栈信息_c++ backtrace函数与符号名解析【方法】
建站主机系统SEO优化与智能配置核心关键词操作指南
昆明高端网站制作公司,昆明公租房申请网上登录入口?
上海制作企业网站有哪些,上海有哪些网站可以让企业免费发布招聘信息?
如何在腾讯云服务器上快速搭建个人网站?
*请认真填写需求信息,我们会在24小时内与您取得联系。