博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
HashMap常用方法
阅读量:6607 次
发布时间:2019-06-24

本文共 3228 字,大约阅读时间需要 10 分钟。

当需要对元素进行计数时,HashMap非常有用,如下例子,统计一个字符串中每个字符出现的次数:

package simplejava;import java.util.HashMap;import java.util.Map.Entry;public class Q12 {    public static void main(String[] args) {        HashMap
countMap = new HashMap
(); // .... a lot of a’s like the following String chars = "abcabcabcghgk"; for(int i = 0; i < chars.length(); i++){ int a = chars.charAt(i); if (countMap.keySet().contains(a)) { countMap.put(a, countMap.get(a) + 1); } else { countMap.put(a, 1); } } for(Entry
e : countMap.entrySet()){ System.out.println((char)(int)e.getKey() + " " + e.getValue()); } }}

输出结果:

g 2
b 3
c 3
a 3
k 1
h 1

HashMap遍历

Map
mp = new HashMap
(); Iterator it = mp.entrySet().iterator(); while (it.hasNext()) { Map.Entry pairs = (Map.Entry) it.next(); System.out.println(pairs.getKey() + " = " + pairs.getValue()); } Map
map = new HashMap
(); for (Map.Entry
entry : map.entrySet()) { System.out.println("Key = " + entry.getKey() + ", Value = " + entry.getValue()); }

打印HashMap的元素

public static void printMap(Map mp) {        Iterator it = mp.entrySet().iterator();        while (it.hasNext()) {            Map.Entry pairs = (Map.Entry) it.next();            System.out.println(pairs.getKey() + " = " + pairs.getValue());            it.remove(); // avoids a ConcurrentModificationException        }    }

根据键值对的value排序

以下代码往TreeMap的构造函数传入一个比较器,来对map进行排序:

package simplejava;import java.util.Comparator;import java.util.HashMap;import java.util.Iterator;import java.util.Map;import java.util.TreeMap;class ValueComparator implements Comparator
{ Map
base; public ValueComparator(Map
base) { this.base = base; } public int compare(String a, String b) { if (base.get(a) >= base.get(b)) { return -1; } else { return 1; } // returning 0 would merge keys }}public class Q12 { public static void printMap(Map mp) { Iterator it = mp.entrySet().iterator(); while (it.hasNext()) { Map.Entry pairs = (Map.Entry) it.next(); System.out.println(pairs.getKey() + " = " + pairs.getValue()); it.remove(); // avoids a ConcurrentModificationException } } public static void main(String[] args) { HashMap
countMap = new HashMap
(); // add a lot of entries countMap.put("a", 10); countMap.put("b", 20); ValueComparator vc = new ValueComparator(countMap); TreeMap
sortedMap = new TreeMap
(vc); sortedMap.putAll(countMap); printMap(sortedMap); }}

虽然有很多种方法来对HashMap进行排序,但以上这种方法在stackoverflow中是最被推崇的;

注:使用了一个比较器Comparator对TreeMap排序,该比较器比较key的方式是取出key对应的value进行大小比较;

本文转自风一样的码农博客园博客,原文链接:http://www.cnblogs.com/chenpi/p/5493678.html,如需转载请自行联系原作者

你可能感兴趣的文章
2016年的十个数据中心故事
查看>>
云数据中心将替代IDC?先弄明白区别再说
查看>>
美今年太阳能光伏电站预计新增13.9吉瓦,比去年翻倍
查看>>
CYQ.Data 从入门到放弃ORM系列:开篇:自动化框架编程思维
查看>>
《Java并发编程的艺术》一一3.3 顺序一致性
查看>>
《CCNP SWITCH 300-115认证考试指南》——导读
查看>>
《设计之外——比修图更重要的111件事》—第1部分3 虚心学习
查看>>
Solaris Studio 12.4 Beta update 7/2014
查看>>
EVCache —— Netflix 的分布式内存数据存储
查看>>
《用友ERP-U8(8.72版)标准财务模拟实训》——1.4 系统管理注册和导入演示账套...
查看>>
《Node.js区块链开发》一3.6 总结
查看>>
《CCNP TSHOOT 300-135学习指南》——2.1节故障检测与排除方法及流程
查看>>
《UG NX8.0中文版完全自学手册》一2.8 布尔运算
查看>>
pera 发布新概念浏览器 Neon ,内置分屏模式
查看>>
移动阅读时代“长文章”生存状态调查
查看>>
《深入理解JavaScript》——1.7 运算符
查看>>
网站优化的具体实施方案
查看>>
如何设置iPhone的手机铃声?【来自星星的你】
查看>>
改变PNG图片的透明度 delphi
查看>>
图解告诉你怎么在VS2017下调试DLL
查看>>