hashmap java 排序_Java 对HashMap进行排序的三种常见方法
首先来看看Map集合获取元素的三种常见方法keySet()、values()、entrySet()
1. values():
返回map集合的所有value的Collection集合(于集合中无序存放)
import java.util.*;
public class Main{
public static void main(String[] args){
Map map = new HashMap(); //构建键值对为的Map集合
map.put("a", "aaa");
map.put("b", "bbb");
map.put("c", "ccc");
Collection collection = map.values(); //获取map集合的所有value的Collection集合(于集合中无序存放)
System.out.println(collection);
}
}
/**
* 运行结果
* [bbb, ccc, aaa]
*/
2. keySet():
返回map集合的所有键的Set集合(于Set集合中无序存放)
通过迭代取出所有key,再利用get()方法获取value, for(类型 元素: 集合) 的本质是获取集合的迭代器进行迭代
import java.util.*;
public class Main{
public static void main(String[] args){
Map map = new HashMap(); //构建键值对为的Map集合
map.put("a", "aaa");
map.put("b", "bbb");
map.put("c", "ccc");
Set keySet = map.keySet(); //获取map集合的所有键的Set集合(于Set集合中无序存放)
Iterator iter = keySet.iterator(); //获取keySet集合的迭代器
while(iter.hasNext()){
String key = iter.next();
String value = map.get(key);
System.out.println("key:" + key + "-->value:" + value);
}
/*
for(String key: keySet){
String value = map.get(key);
System.out.println("key:" + key + "-->value:" + value);
}
*/
}
}
/**
* 运行结果
* key:b-->value:bbb
* key:c-->value:ccc
* key:a-->value:aaa
*/
3. entrySet():
返回map集合的所有"映射"的Set集合,这里规范每个"映射"的类型为Map.Entry(于Set集合中无序存放)
通过迭代取出所有的“映射”,再利用getKey()、getValue()方法获取相应键、值
import java.util.*;
public class Main{
public static void main(String[] args){
Map map = new HashMap(); //构建键值对为的Map集合
map.put("a", "aaa");
map.put("b", "bbb");
map.put("c", "ccc");
Set> entrySet = map.entrySet(); //获取map集合的所有"映射"的Set集合,这里规范每个映射的类型为Map.Entry(于Set集合中无序存放)
Iterator> iter = entrySet.iterator(); //获取entrySet集合的迭代器,Map.Entry为迭代元素的类型
while(iter.hasNext()){
Map.Entry item = iter.next();
String key = item.getKey();
String value = item.getValue();
System.out.println("key:" + key + "-->value:" + value);
}
/*
for(Map.Entry item: entrySet){
String key = item.getKey();
String value = item.getValue();
System.out.println("key:" + key + "-->value:" + value);
}
*/
}
}
/**
* 运行结果
* key:b-->value:bbb
* key:c-->value:ccc
* key:a-->value:aaa
*/
有以上方法作为基础,那么我们很容易想到对HashMap进行排序的两种方法
1. 通过keySet()获取Map集合的所有键的Set集合,由List集合获取其中所有元素,通过比较器对元素为键的List集合进行排序
2. 通过entrySet()获取Map集合所有映射的Set集合,由List集合获取其中所有元素,通过比较器对元素为"映射"List集合进行排序
通过对比较器compare方法的Override,两者还可以实现利用value进行排序。有关java中Comparable和Comparator比较的详解
import java.util.*;
public class DescKeyComparator implements Comparator{
public static void main(String[] args){
Map map = new HashMap(); //构建键值对为的Map集合
map.put("a", "aaa");
map.put("b", "bbb");
map.put("c", "ccc");
Set entrySet = map.keySet(); //获取map集合的所有键的Set集合(于Set集合中无序存放)
List list = new ArrayList(entrySet); //新建List集合获取Set集合的所有元素(键对象)(顺序与Set集合一样)
/**
* 接下来的排序是list的专长了
* 通过“比较器(DescKeyComparator)”,对list进行排序
*/
Collections.sort(list, new DescKeyComparator());
/*
Collections.sort(list); //String实现了Comparable,默认升序排列
*/
Iterator iter = list.iterator(); //获取List集合的迭代器,String为迭代元素的类型
while(iter.hasNext()){
String key = iter.next();
String value = map.get(key);
System.out.println("key:" + key + "-->value:" + value);
}
/*
for(Map.Entry item: list){
String key = iter.next();
String value = map.get(key);
System.out.println("key:" + key + "-->value:" + value);
}
*/
}
@Override
public int compare(String key1, String key2){
return key2.compareTo(key1); //降序排序; String作为api提供的类,实现了Comparable的compareTo方法被设计成小于、等于、大于分别返回负数、零、正数
}
}
/**
* 运行结果
* key:c-->value:ccc
* key:b-->value:bbb
* key:a-->value:aaa
*/
import java.util.*;
public class AscKeyComparator implements Comparator>{
public static void main(String[] args){
Map map = new HashMap(); //构建键值对为的Map集合
map.put("a", "aaa");
map.put("b", "bbb");
map.put("c", "ccc");
Set> entrySet = map.entrySet(); //获取map集合的所有"映射"的Set集合,这里规范每个映射的类型为Map.Entry(于Set集合中无序存放)
List> list = new ArrayList>(entrySet); //新建List集合获取Set集合的所有元素("映射"对象)(顺序与Set集合一样)
/**
* 接下来的排序是list的专长了
* 通过“比较器(AscKeyComparator)”,对list进行排序
*/
Collections.sort(list, new AscKeyComparator());
Iterator> iter = list.iterator(); //获取List集合的迭代器,Map.Entry为迭代元素的类型
while(iter.hasNext()){
Map.Entry item = iter.next();
String key = item.getKey();
String value = item.getValue();
System.out.println("key:" + key + "-->value:" + value);
}
/*
for(Map.Entry item: list){
String key = item.getKey();
String value = item.getValue();
System.out.println("key:" + key + "-->value:" + value);
}
*/
}
@Override
public int compare(Map.Entry item1, Map.Entry item2){
return item1.getKey().compareTo(item2.getKey()); //升序排序
}
}
/**
* 运行结果
* key:a-->value:aaa
* key:b-->value:bbb
* key:c-->value:ccc
*/
以上就是Java 对HashMap进行排序的三种常见方法的详细内容,更多关于Java 对HashMap进行排序的资料请关注脚本之家其它相关文章!
hashmap java 排序_Java 对HashMap进行排序的三种常见方法相关推荐
- hashmap java 便利_java遍历HashMap的高效方法
IndexedDB参考资料网址 IndexedDB:浏览器里内置的数据库, Web骇客 http://www.webhek.com/indexeddb/ 前端的数据库:IndexedDB入门(很全面) ...
- java常见的ide_在三个Java IDE中生成的三种常见方法
java常见的ide 在本文中,我研究了NetBeans 8.0.2 , IntelliJ IDEA 14.0.2和Eclipse Luna 4.4.1生成的三种"通用"方法[ e ...
- 在三个Java IDE中生成的三种常见方法
在本文中,我研究了NetBeans 8.0.2 , IntelliJ IDEA 14.0.2和Eclipse Luna 4.4.1生成的三种"通用"方法[ equals(Objec ...
- java map 自动排序_Java中Map的排序
Map的种类 在Java中,Map的主要作用是存储键值对.由于是根据键得到值,所以不允许键重复.它主要有如下几个类别: HashMap: 最常用的Map,它根据键的HashCode值存储数据,根据键可 ...
- java comparable排序_java 实现Comparable接口排序,升序、降序、倒叙
本人由于项目开发中需要对查询结果list进行排序,这里根据的是每一个对象中的创建时间降序排序.本人讲解不深,只实现目的,如需理解原理还需查阅更深的资料. 1.实现的效果 2.创建排序的对象 packa ...
- java 线性表排序_Java线性表的排序
Java线性表的排序 前言:刚才在弄JDBC的时候,忽然觉得order-by用太多了没新鲜感,我的第六感告诉我java有对线性表排序的封装,然后在eclipse里随便按了一下"." ...
- java hashmap遍历顺序_Java中HashMap遍历的两种方式
第一种: Map map = HashMap(); Iterator iter = map.entrySet().iterator(); (iter.hasNext()) { Map.Entry e ...
- 希尔排序基础java代码_java 算法之希尔排序详解及实现代码
摘要:这篇Java开发技术栏目下的"java 算法之希尔排序详解及实现代码",介绍的技术点是"希尔排序详解.实现代码.希尔排序.Java.实现.代码",希望对大 ...
- java对象排序_Java™ 教程(对象排序)
对象排序 List l可以如下排序. Collections.sort(l); 如果List包含String元素,它将按字母顺序排序,如果它由Date元素组成,它将按时间顺序排序,这是怎么发生的?St ...
- java字母排序_java可以对字母排序吗?
java对字母排序代码如下:(推荐:java视频教程)package lianxi.Demo; import java.util.ArrayList; import java.util.List; i ...
最新文章
- C#时间(DateTime)格式化
- 导出matlab程序,Matlab数据导入导出
- spring框架学习1:搭建测试
- SpringCloud Alibaba 框架下公司架构图
- Scala Object
- Hibernate复习笔记
- 微信小程序:最新掌上题库微信小程序源码下载,修复登录接口,支持在线考试,自定义导入考题
- 单个像素代表的实际物理尺寸
- 改ip 银河麒麟_PK体系银河麒麟云桌面和云平台
- int,int*,(int*)区别
- SSH端口转发Forwarding及隧道Tunneling
- 从两个和尚挑水的故事得到的启发
- forward完美转发
- Tuscany 的说明
- pdf转换成excel文件_将PDF文件转换为Excel
- 微信小程序私教预约管理系统+后台管理系统
- java基于springboot的家庭理财记账
- ppt快捷键和字体使用技巧(一)
- javascript小技巧JavaScript[对象.属性]集锦(转自飛雪飄寒 )
- 淘宝商品信息css+html
热门文章
- Arduino IDE 烧录 ESP8266教程
- ps一点通精品知识库
- python希腊字母大小写的转换_在线英文字母大小写转换工具-包含英文大写转小写-字母小写转大写_蛙蛙在线工具...
- Linux基础知识点总结
- 【冰点文库下载器.exe】
- python snownlp_SnowNLP情感分析+生成词云
- python snownlp了解_[Python][snownlp]基于情感词典的情感分析
- 交运集团开设“技师工作站“ 创新“机电一体化“人才培养模式
- 用HTML和CSS制作简单的静态网页
- 这些基础的C语言选择题,不知道你能不能拿下