一、按key值排序
假设HashMap存储的键-值对为(String,Integer),按key排序可以调用JDK函数sort(默认的按字典升序):
[java] view plaincopy
Set<String> keySet = map.keySet();
Collections.sort(keySet);
for(Iterator<String> ite = keySet.iterator(); ite.hasNext();) {
String temp = ite.next();
System.out.println("key-value: "+temp+","+map.getValue(temp);
}
如果想要按字典的降序排列,则需改写sort方法里面的比较器Comparator:
Collections.sort(keySet, new Comparator() {
public int compare(Object o1, Object o2) {
if(Integer.parseInt(o1.toString())>Integer.parseInt(o2.toString())
return 1;
if(Integer.parseInt(o1.toString())==Integer.parseInt(o2.toString())
return 0;
else
return -1;
}
});
二、按value值排序
1)方法一:用两个list链表实现
[java] view plaincopy
List<String> keyList = new LinkedList<String>();
keyList.addAll(map.keySet());
List<Integer> valueList = new LinkedList<Integer>();
valueList.addAll(map.values());
for(int i=0; i<valueList.size(); i++)
for(int j=i+1; j<valueList.size(); j++) {
if(valueList.get(j)>valueList.get(i)) {
valueList.set(j, valueList.get(i));
valueList.set(i, valueList.get(j));
//同样调整对应的key值
keyList.set(j, keyList.get(i));
keyList.set(i, kyeList.get(j));
}
然后依次把key值和对应value值重新装入HashMap即可。
2)方法二:改写JDK提供的Comparator接口方法compare
[java] view plaincopy
List<Map.Entry<String, Integer>> list = new LinkedList<Map.Entry<String, Integer>>();
list.addAll(map.entrySet());
Collections.sort(list, new Comparator<Map.Entry<String, Integer>>() {
public int compare(Map.Entry obj1, Map.Entry obj2) {//从高往低排序
if(Integer.parseInt(obj1.getValue().toString())<Integer.parseInt(obj2.getValue().toString()))
return 1;
if(Integer.parseInt(obj1.getValue().toString())==Integer.parseInt(obj2.getValue().toString()))
return 0;
else
return -1;
}
});
for(Iterator<Map.Entry<String, Integer>> ite = list.iterator(); ite.hasNext();) {
Map.Entry<String, Integer> map = ite.next();
System.out.println("key-value: " + map.getKey() + "," + map.getValue());
}
假设HashMap存储的键-值对为(String,Integer),按key排序可以调用JDK函数sort(默认的按字典升序):
[java] view plaincopy
Set<String> keySet = map.keySet();
Collections.sort(keySet);
for(Iterator<String> ite = keySet.iterator(); ite.hasNext();) {
String temp = ite.next();
System.out.println("key-value: "+temp+","+map.getValue(temp);
}
如果想要按字典的降序排列,则需改写sort方法里面的比较器Comparator:
Collections.sort(keySet, new Comparator() {
public int compare(Object o1, Object o2) {
if(Integer.parseInt(o1.toString())>Integer.parseInt(o2.toString())
return 1;
if(Integer.parseInt(o1.toString())==Integer.parseInt(o2.toString())
return 0;
else
return -1;
}
});
二、按value值排序
1)方法一:用两个list链表实现
[java] view plaincopy
List<String> keyList = new LinkedList<String>();
keyList.addAll(map.keySet());
List<Integer> valueList = new LinkedList<Integer>();
valueList.addAll(map.values());
for(int i=0; i<valueList.size(); i++)
for(int j=i+1; j<valueList.size(); j++) {
if(valueList.get(j)>valueList.get(i)) {
valueList.set(j, valueList.get(i));
valueList.set(i, valueList.get(j));
//同样调整对应的key值
keyList.set(j, keyList.get(i));
keyList.set(i, kyeList.get(j));
}
然后依次把key值和对应value值重新装入HashMap即可。
2)方法二:改写JDK提供的Comparator接口方法compare
[java] view plaincopy
List<Map.Entry<String, Integer>> list = new LinkedList<Map.Entry<String, Integer>>();
list.addAll(map.entrySet());
Collections.sort(list, new Comparator<Map.Entry<String, Integer>>() {
public int compare(Map.Entry obj1, Map.Entry obj2) {//从高往低排序
if(Integer.parseInt(obj1.getValue().toString())<Integer.parseInt(obj2.getValue().toString()))
return 1;
if(Integer.parseInt(obj1.getValue().toString())==Integer.parseInt(obj2.getValue().toString()))
return 0;
else
return -1;
}
});
for(Iterator<Map.Entry<String, Integer>> ite = list.iterator(); ite.hasNext();) {
Map.Entry<String, Integer> map = ite.next();
System.out.println("key-value: " + map.getKey() + "," + map.getValue());
}
发表评论
-
linux将80端口映射到8080
2017-11-28 17:06 525iptables -t nat -A PREROUTING ... -
eclipse黑科技
2017-10-12 10:46 524eclipse的黑科技 -
linux启动jetty系统环境变量不生效
2017-09-11 20:40 922netstat -nalp | grep 8080 kill ... -
前端调后端跨域问题
2017-08-14 23:59 5011:使用Filter package xx ... -
IFRAME跨域单点登录问题
2017-07-21 15:13 1463iframe里面src指向了一个跨域的url,www.a.co ... -
JS BASE64
2017-07-21 15:02 452var keyStr = "ABCDEFGHIJK ... -
springboot 打war包的问题
2017-07-07 19:04 4571.首先 修改pom.xml下的打包方式 <packa ... -
flex布局
2017-06-27 20:24 431要实现如下简单效果 使用传统布局: .sa-fo ... -
PosgreSQL
2017-06-12 13:31 622sudo-s(root进入文件夹) export PGD ... -
spring boot idea 启动异常
2017-06-05 15:27 1012org.springframework.context.App ... -
JS小数相加问题
2017-05-11 11:20 2665JS: 0.1+0.2会等于0.3000000 ... -
JS与,或运算DEMO
2017-04-13 16:36 461var a = 0x1; var b = 0x2; v ... -
JS位预算符
2017-04-04 13:51 596详见博客http://www.w3school.com.cn/ ... -
未安装oracle数据库,配置plsqldeveloper
2017-04-01 13:36 517本地没装oracle数据库,但是又想用plsqldevelop ... -
maven命令行创建JMH工程的方式
2017-03-30 13:46 664新建工程 mvn archetype:generate -Di ... -
《将博客搬至CSDN》
2017-03-28 16:29 10本人同意搬家至CSDN, -
坐标轴范围及刻度的自适应算法
2017-03-24 10:14 1761本文参考博客:http://blog.csdn.net/h ... -
坐标轴范围及刻度的自适应算法
2017-03-24 10:13 0本文参考博客:http://blog.csdn.net/he ... -
apache commons pool2: ObjectPool类族实现分析
2017-03-17 09:56 702http://shmilyaw-hotmail-com.i ... -
cron表达式实现java调度任务
2017-03-17 09:34 535CronExpression cronExpression ...
相关推荐
HashMap排序并不是HashMap本身的功能,而是通过其他手段实现的。根据实际需求,可以选择使用LinkedHashMap或通过转换和排序来达到目的。理解这些方法及其背后的原理,可以帮助我们在编程中更灵活地处理数据结构和...
标题中的“自己写的一个随机数的例子,采用hashmap排序”表明这是一个关于生成随机数并使用HashMap进行排序的程序示例。在这个例子中,我们将探讨如何生成随机数、HashMap的数据结构以及其排序机制。 首先,随机数...
HashMap排序是数据结构与算法中常见的一种排序算法。本文即以Android平台为例来实现该算法。 具体代码如下: public static void main(String[] args) { Map<String> map = new HashMap(); map.put(lisi, 5); ...
先根据value的值从小到大排序,value相同再根据key的字母顺序来排序
在博文“HashMap通过对VALUE排序 源代码”中,作者可能详细介绍了如何实现上述方法,尤其是自定义Comparator来对HashMap的值进行排序。遗憾的是,由于没有提供具体的博客内容,我们无法给出更详细的源代码分析。不过...
Java HashMap两种简便排序方法解析 Java HashMap是一种常用的数据结构,然而,它的储存是没有顺序的,按照key的HashCode实现。这使得在 certainsituations下的排序变得非常重要。下面,我们将介绍两种简便的排序...
对List集合进行排序 对集合中的某个属性进行排序
`HashMap` 提供快速存取但无序,而 `TreeMap` 可以自动排序。在这个例子中,我们利用 `TreeMap` 的排序功能,结合自定义的 `Car` 类,实现了按照速度和型号双重排序的功能。通过这种方式,我们可以更方便地管理和...
1. HashMap排序: HashMap本身不支持排序,但如果需要排序,可以先将HashMap转换为List(例如List, V>>),然后使用Collections.sort()方法对List进行排序。排序的关键在于提供一个自定义的Comparator来决定比较规则...
在这个"用HashMap写的一个小Demo用来写游戏排名的一种方法"的示例中,我们很可能会看到如何利用HashMap来组织游戏分数并进行排序,以实现一个简单的游戏排名系统。 HashMap的特点在于它的键(key)是唯一的,每个键...
- **性能**:尽管`TreeMap`提供排序功能,但它的时间复杂度通常是O(log n),因此在某些情况下可能比`HashMap`和`LinkedHashMap`慢。 #### 4. HashTable `HashTable`是一种古老的`Map`实现,它的设计是为了确保线程...
HashMap不保证元素的顺序,如果需要保持插入顺序或根据特定规则排序,应考虑使用LinkedHashMap。 ArrayList和HashMap的使用场景有所不同。ArrayList适合于需要频繁进行随机访问且元素顺序重要的情况,比如作为数据...
HashMap, HashTable, LinkedHashMap, TreeMap 的区别 在 Java 中,Map 是一个非常重要的集合类,用于存储键值对。其中,HashMap, HashTable, LinkedHashMap, TreeMap 是四种常用的 Map 实现类,每种类都有其特点和...
综上所述,选择`TreeMap`、`TreeSet`、`HashSet`还是`HashMap`,主要取决于具体的应用需求,比如是否需要保持元素的排序,是否允许重复元素,以及对插入、删除和查找操作速度的要求。正确理解并使用这些集合类,可以...
6. 使用接口而非实现类:在声明变量时,使用Map而非HashMap,这样在实际运行时可以更灵活地更换其他类型的Map,如LinkedHashMap,以改变元素的排序或性能特性。 CacheManager.java文件可能是一个用于管理缓存的类,...
HashMap是Java中非常常见的一种数据结构,...对于需要排序的映射场景,建议使用TreeMap。在使用TreeMap时,key需要实现Comparable接口,或者在构造时提供Comparator,否则在运行时可能会抛出ClassCastException异常。
### HashMap与HashTable和HashSet的区别 #### 一、概述 在Java集合框架中,`HashMap`, `HashTable` 和 `HashSet` 是三个重要的数据结构,它们分别实现了`Map`接口和`Set`接口,提供了不同的功能来满足不同的编程...
例如,如果要按照姓名排序,可以使用`TreeMap`代替HashMap,因为它保持了键的自然排序。 源码链接给出的是作者张翔-ouc在iteye博客上的一篇文章,虽然具体内容未给出,但可以预见博主可能详细解释了HashMap的工作...