`
joyocaowei
  • 浏览: 31423 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

Map的一种使用

阅读更多

在Thinking in java中的11.10小节开始,介绍了这么一个例子: 如何检查Java的Random类的随机性,即对落入不同范围的数字进行计数。

Random rand = new Random(47);
		Map<Integer, Integer> m = new HashMap<Integer, Integer>();
		for (int i = 0; i < 1000; i++) {
			int r = rand.nextInt(20);
			Integer freq = m.get(r);
			m.put(r, freq == null ? 1 : freq + 1);
		}
		System.out.println(m);

 在我的电脑上运行的结果是:

 

{0=42, 1=44, 2=53, 3=43, 4=44, 5=53, 6=42, 7=53, 8=46, 9=56, 10=58, 11=55, 12=48, 13=55, 14=52, 15=50, 17=50, 16=53, 19=52, 18=51}

 

对代码的解释: 如果键不在容器中,get方法将返回null(表示该值第一次被找到)。否则,get方法将返回与键关联的Integer值,并且这个值递增(+1)。 当然,代码中有自动包装机制(这是JDK1.5的新特性)。

 

现在假设你有一个职员列表(假设只有名字),列表中可能具有相同的名字,找出相同的名字在列表中出现的次数。

这时可以使用上面介绍的方法,但是需要获得java的键值对视图,找出那些数值大于1的name。

private void findSameName(List<String> nameList) {
		Map<String, Integer> map = new HashMap<String, Integer>();
		for (String name : nameList) {
			map.put(name, map.get(name) == null ? 1 : map.get(name) + 1);
		}
		Set<Map.Entry<String, Integer>> set = map.entrySet();
		for (Map.Entry<String, Integer> entry : set) {
			int num = entry.getValue().intValue();
			String name = entry.getKey();
			if (num > 1) {
				System.out
						.println("this file has the same name, that name is ["
								+ name + "], it was found " + num + " times.");
			}
		}
	}
 

假设你为这个方法传递一个namelist: a,a,b,c,c,c,d,e,f,g,h

在我的电脑上的输出为:

this file has the same name, that name is [c], it was found 3 times.
this file has the same name, that name is [a], it was found 2 times.

 

Map与数组和其他的Collection一样,可以很容易的扩展到多维,例如你跟踪拥有多个宠物的人,你可以这样设置

Map<Person, List<? extends Pet>
 
分享到:
评论

相关推荐

    另一种遍历Map的方式

    另一种遍历Map的方式,讲述如何使用java中的map

    论文研究-一种Turbo码的快速LogMAP译码算法.pdf

    LogMAP算法是Turbo码译码算法的一种简化算法,这类算法仍具有译码复杂度高,译码时延大的缺点。针对这一问题,提出了一种简化的对数最大后验概率译码算法。该算法基于逼近理论,用分段式最佳平方逼近多项式近似...

    java中set、list和map的使用方法实例

    // GOF给出的定义为:提供一种方法访问一个容器(container)对象中的各个元素, // 而又不需暴露该对象的内部细节。 // 学习set对象容器的使用 // set容器中的对象不允许重复 // set容器接口的实现类有HashSet和 ...

    mapstruct, 一种用于生成安全bean映射器.zip

    mapstruct, 一种用于生成安全bean映射器 MapStruct - Java映射,简单的方法 ! 什么是 MapStruct?要求使用 MapStructMavenGradle文档并获取帮助信息。许可协议来自源代码的构建链接什么是

    Map是一种键值对(key-value)数据结构

    map

    map容器讲解

    Map是STL的一个关联容器,...这里说下map内部数据的组织,map内部自建一颗红黑树(一种非严格意义上的平衡二叉树),这颗树具有对数据自动排序的功能,所以在map内部所有的数据都是有序的,后边我们会见识到有序的好处。

    World Map Globe Edition 2 V14.5

    -能够与在线地图平铺系统集成,只需单击一次,包括OpenStreetMap、AerisWeather、Stamen、Carto、MapBox、Sputnik等,并具有渐进式渲染,允许在放大时获得更高的质量。 -脱机磁贴支持与磁贴下载助手。 -六边形...

    java一键xml转map,一键map转xml工具类

    java一键xml转map,一键map转xml工具类,代码已封装好,一个方法即可将两种格式文本互转,注意是互转,网上很多只有xml转map,并不支持map转xml

    MAP译码算法的研究

    map算法MAP算法在Turbo码译码中的实现及性能在数域中,串行级联的MAP算法是用于获得高性能的Turbo码译码器。一般情况下,解码器通过可编程门...随着Turbo码解码器同步技术的实现,提出了一种高效连续的MAP译码算法。

    java中Map集合的常用遍历方法及HashMap的应用实例

    Map的遍历大体有3种: 1、遍历Map.entrySet():它的每一个元素都是Map.Entry对象,这个对象中, 放着的就是Map中的某一对key-value; 2、遍历Map.keySet():它是Map中key值的集合,我们可以通过遍历这个集合来 ...

    网络游戏-一种基于BP神经网络的MAP标定方法.zip

    网络游戏-一种基于BP神经网络的MAP标定方法.zip

    SkyMap Pro8.0

    SkyMap软件将天空呈现在你的显示器上,模拟从地球看到的公元前四千年到 公元八千年的星座分布...该软件有两种显示的模式,一种是"Horizon",模拟一般观察者在地面所看 到的景象,一种是"SkyArea",你可以选择天空中一小块...

    一种基于卷积神经网络的图像复原算法Match-Map.pdf

    一种基于卷积神经网络的图像复原算法Match-Map.pdf

    模板常用操作 和 map常用操作

    包含两个程序,1)模板常用操作,和一个用模板模拟的栈。2)map map中用到的增加 删除 查找 操作,和两种排序方式,当关键 字是结构体时的排序,一种是再结构体中重载符号,另外一种是一个类。

    论文研究-一种基于EM-MAP的联合CFO双选信道估计算法.pdf

    针对在双选信道下OFDM系统需要同时获取精确的载波偏移和信道状态信息,而采用贝叶斯MAP算法进行联合载波频率偏移和信道状态估计复杂度过高的问题,提出一种基于EM-MAP的联合CFO双选信道估计算法。首先利用基扩展模型...

    基于MAP的图像超分辨率重建算法

    介绍了一种基于MAP的图像超分辨率重建算法

    java Map

    是java Map中几种常用的遍历方法,适合于新手,谢谢

    一种基于MAP噪声估计器的低成本SINS_GPS的快速UKF算法.pdf

    一种基于MAP噪声估计器的低成本SINS_GPS的快速UKF算法.pdf

    3D全景制作软件(Visution Mapio Pro) V2.1.2 官方特别版.zip

    Visution Mapio Pro(3D全景制作软件)是一个用于创建投影显示的Mapio显像技术软件。 现在,你不仅可以与标准屏幕工作,也与任何倾斜,包括圆柱形和球形及各种形状。 无限制片可以让你分开的视频覆盖的任何空间。 您...

Global site tag (gtag.js) - Google Analytics