TreeMap,HashMap的排序问题
来源:互联网 发布:淘宝卖psv2000良心店 编辑:程序博客网 时间:2024/05/22 10:39
TreeMap默认(根据map的key排序)是升序的,如果我们需要改变排序方式,则需要使用比较器:Comparator。
Comparator可以对集合对象或者数组进行排序的比较器接口,实现该接口的public compare(T o1,To2)方法即可实现排序,该方法主要是根据第一个参数o1,小于、等于或者大于o2分别返回负整数、0或者正整数。如下
Map<String, String> map = new TreeMap<String, String>(
new Comparator<String>() {
public int compare(String obj1, String obj2) {
// 降序排序
return obj2.compareTo(obj1);
}
new Comparator<String>() {
public int compare(String obj1, String obj2) {
// 降序排序
return obj2.compareTo(obj1);
}
});
根据TreeMap的value来进行排序(转换成list排序)如下:
上面例子是对根据TreeMap的key值来进行排序的,但是有时我们需要根据TreeMap的value来进行排序。对value排序我们就需要借助于Collections的sort(List<T> list, Comparator<? super T> c)方法,该方法根据指定比较器产生的顺序对指定列表进行排序。但是有一个前提条件,那就是所有的元素都必须能够根据所提供的比较器来进行比较。如下:
//这里先将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());
//然后通过比较器来实现排序
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());
}
});
HashMap实现排序:
HashMap的值是没有顺序的,是按照key的HashCode来实现的。对于这个无序的HashMap我们要实现排序,
参照TreeMap的value排序,一样的也可以实现HashMap的排序。如下
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());
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());
}
});
0 0
- TreeMap,HashMap的排序问题
- Java HashMap和TreeMap的排序问题总结
- 关于map的数据排序问题(hashmap,treemap)
- HashMap,LinkedHashMap 和 TreeMap 的排序研究
- Treemap 有序的hashmap。用于排序
- hashMap,treeMap,LinkedHashMap的默认排序
- hashMap,treeMap,LinkedHashMap的默认排序
- HashMap和TreeMap的遍历、排序、差别
- TreeMap排序 & HashMap分析
- HashMap和TreeMap排序
- Map ,HashMap , TreeMap , TreeMap 默认排序
- Map ,HashMap , TreeMap , TreeMap 默认排序
- android 基础 HashMap,TreeMap排序
- HashMap TreeMap 的区别
- Java中对Map(HashMap,TreeMap,Hashtable等)的排序
- Java中对Map(HashMap,TreeMap,Hashtable等)的排序
- 论HashMap、Hashtable、TreeMap、LinkedHashMap的内部排序
- 论HashMap、Hashtable、TreeMap、LinkedHashMap的内部排序
- 35、Power Query-分组中国式排名
- AndroidStudio中导入/上传GitHub项目
- mantis不需要邮箱验证,创建使用密码登录
- 机器学习基本概念
- opencv学习笔记(二十三)Canny边缘检测cvCanny()
- TreeMap,HashMap的排序问题
- linux文件和目录的操作命令
- myeclipse2014软件安装和激活
- 模拟退火算法原理与算法包
- apache虚拟机配置包含二级域名
- js通用的惰性单例示例
- 阅读----C#图解教程第四章 第五章
- 2017-01-15
- Android Studio中需要掌握的Debug调试技巧