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 ...
最新文章
- html5图片怎么顶格,iQOO 5系列几乎达到了“顶格”的性能状态。
- 从Spring起,Java EE 6必须具备哪些附加功能?
- dom4j的读写xml文件,读写xml字符串
- 神奇的python(五)之python强制退出报错(异常)解决方法
- Git学习笔记与IntelliJ IDEA整合
- 花瓣网爬取美女图片 每次20张
- 计算机无法访问网络位置,不能访问网络位置,详细教您怎么解决
- 学生信息管理系统-web项目实训(基于JAVA)
- 数据集大小与模型性能的敏感性分析
- Python学习资料全面总结,真的对零基础很有用
- 码农翻身讲网络2:TCP协议
- 十二道锋味——既是食,也是人
- 国信证券学习系列(4)
- Linux系统安装单机版K8S
- 引导图(GuideView)
- 5.7.2 使用设计视图创建交叉表查询
- 查重or真伪查验or原件管理,电子发票三大难题,哪个更让人上火?
- 词云生成库wordcloud详解(三):IntegralOccupancyMap类——词云布局机制
- jmeter如何绕过登录做压力测试?
- 论文中页眉页脚的设置方法~【转】