Java对Map排序
2019独角兽企业重金招聘Python工程师标准>>>
Java中对Map(HashMap,TreeMap,Hashtable等)的排序时间
首先简单说一下他们之间的区别:
HashMap: 最常用的Map,它根据键的HashCode 值存储数据,根据键可以直接获取它的值,具有很快的访问速度。HashMap最多只允许一条记录的键为Null(多条会覆盖);允许多条记录的值为 Null。非
首先简单说一下他们之间的区别:
HashMap: 最常用的Map,它根据键的HashCode 值存储数据,根据键可以直接获取它的值,具有很快的访问速度。HashMap最多只允许一条记录的键为Null(多条会覆盖);允许多条记录的值为 Null。非同步的。
TreeMap: 能够把它保存的记录根据键(key)排序,默认是按升序排序,也可以指定排序的比较器,当用Iterator 遍历TreeMap时,得到的记录是排过序的。TreeMap不允许key的值为null。非同步的。
Hashtable: 与 HashMap类似,不同的是:key和value的值均不允许为null;它支持线程的同步,即任一时刻只有一个线程能写Hashtable,因此也导致了Hashtale在写入时会比较慢。
LinkedHashMap: 保存了记录的插入顺序,在用Iterator遍历LinkedHashMap时,先得到的记录肯定是先插入的.在遍历的时候会比HashMap慢。key和value均允许为空,非同步的。
TreeMap默认按key进行升序排序,如果想改变默认的顺序,可以使用比较器:
Map<String,String> map = new TreeMap<String,String>(new Comparator<String>(){
public int compare(String obj1,String obj2){
//降序排序
return obj2.compareTo(obj1);
}
});
map.put("month", "The month");
map.put("bread", "The bread");
map.put("attack", "The attack");
Set<String> keySet = map.keySet();
Iterator<String> iter = keySet.iterator();
while(iter.hasNext()){
String key = iter.next();
System.out.println(key+":"+map.get(key));
}
如果要对TreeMap按照value的值进行排序,或者对HashMap,Hashtable,LinkedHashMap进行排序,则可以使用Map.Entry<K,V>接口结合List实现:
eg.1 对TreeMap按照value值升序:
List<Map.Entry<String,String>> mappingList = null;
Map<String,String> map = new TreeMap<String,String>();
map.put("aaaa", "month");
map.put("bbbb", "bread");
map.put("ccccc", "attack");
//通过ArrayList构造函数把map.entrySet()转换成list
mappingList = new ArrayList<Map.Entry<String,String>>(map.entrySet());
//通过比较器实现比较排序
Collections.sort(mappingList, new Comparator<Map.Entry<String,String>>(){
public int compare(Map.Entry<String,String> mapping1,Map.Entry<String,String> mapping2){
return mapping1.getValue().compareTo(mapping2.getValue());
}
});
for(Map.Entry<String,String> mapping:mappingList){
System.out.println(mapping.getKey()+":"+mapping.getValue());
}
eg.2 对HashMap(或Hashtable,LinkedHashMap)按照key的值升序:
List<Map.Entry<String,String>> mappingList = null;
Map<String,String> map = new HashMap<String,String>();
map.put("month", "month");
map.put("bread", "bread");
map.put("attack", "attack");
//通过ArrayList构造函数把map.entrySet()转换成list
mappingList = new ArrayList<Map.Entry<String,String>>(map.entrySet());
//通过比较器实现比较排序
Collections.sort(mappingList, new Comparator<Map.Entry<String,String>>(){
public int compare(Map.Entry<String,String> mapping1,Map.Entry<String,String> mapping2){
return mapping1.getKey().compareTo(mapping2.getKey());
}
});
for(Map.Entry<String,String> mapping:mappingList){
System.out.println(mapping.getKey()+":"+mapping.getValue());
}
转载于:https://my.oschina.net/zhenguoguan/blog/138615
Java对Map排序相关推荐
- Java作业-Map排序
目标效果: 源码: import java.util.Comparator; import java.util.HashMap; import java.util.Map; import java.u ...
- java中map排序(SortedMap的用法)
package JavaSenior; import java.util.HashMap; import java.util.Iterator; import java.util.Map.Entry; ...
- Java数据结构Map遍历和排序
map结构和list结合很好用,基本的遍历和排序每次都要查一下,用的不熟练,这里汇总下map的基本遍历和排序,参考的代码如下: package com.vip;import java.util.Arr ...
- java treemap value排序_【TreeMap】对Map按key和value分别排序
使用TreeMap可以对key 和Value进行排序 Map是键值对的集合接口,它的实现类主要包括:HashMap,TreeMap,Hashtable以及LinkedHashMap等. ** Tree ...
- java的map键值类型是否固定_Java中Map根据键值(key)或者值(value)进行排序实现
我们都知道,java中的Map结构是key->value键值对存储的,而且根据Map的特性,同一个Map中 不存在两个Key相同的元素,而value不存在这个限制.换句话说,在同一个Map中Ke ...
- Java Map排序详解
一)Map简介 java.util.Map是一个键值对集合接口,它的实现类主要包括:HashMap,TreeMap,Hashtable以及LinkedHashMap等. HashMap:最常用的Map ...
- Map排序(Java)
Java中的Map排序问题 在Java编写程序的过程中,常常会碰到使用map(key,value)来记录数据的情况,有些时候我们需要根据实际需要来对map中的数据进行排序.以下就是个人总结的map排序 ...
- java map按照key排序_java Map排序(按key和按value)
1.按照key排序 对于java中Map的排序,有排序Map,比如TreeMap,对于这个Map,首先只能按照键排序,其次再put和remove的时候由于需要排序,性能上会有所牺牲. 这种方案,使用h ...
- JAVA map排序实现
Map排序的方式有很多种,这里记录下自己总结的两种比较常用的方式:按键排序(sort by key), 按值排序(sort by value). 1.按键排序 jdk内置的java.util包下的Tr ...
- Java中Map用法详解
原文地址http://blog.csdn.net/guomutian911/article/details/45771621 原文地址http://blog.csdn.net/sunny2437885 ...
最新文章
- R语言泊松回归(poisson)模型案例:基于robust包的Breslow癫痫数据集
- sql删除重复的数据保留一条_leetcode题库-sql练习精讲系列--九、删除重复
- tomcat的日志不输出日志信息的解决方法
- C语言矩阵M*N节省空间的算法(附完整源码)
- webpack设置应用缓存_如何使用Webpack在Rails应用程序中设置TinyMCE
- pycharm常用快捷键详解,让你编程 事半功倍。
- 三白话经典算法系列 Shell排序实现
- python怎么创建变量_Python之变量的创建过程
- 阿里云构建Jenkins服务
- 【蜕变之路】第31天 Spring Tool Suite和IntelliJ (2019年3月21日)
- java--Date时间
- innerhtml有值但是页面上无显示_西门子PLCS7-1200用户自定义Web页面制作
- 梦参老和尚:糊涂人念〈大悲咒〉往生的故事
- Android系统开发篇(二) —— 建立Android系统开发环境之Ubuntu 20.04.4 LTS
- 【Linux】/bin/sh、/bin/bash、/bin/dash、init=/sysroot/bin/bash(sh) 、init=/bin/bash(sh) 的区别
- 努比亚Z11miniRoot及真机调试常见问题
- 嵌入式工控机在舞台灯光控制中的应用
- BootLoader有什么作用?
- String------字符串的字母大小写切换及获取
- android view 曝光,Android 曝光采集(商品view曝光量的统计)第二弹