`
joyocaowei
  • 浏览: 32785 次
  • 性别: 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的方式" Map是一种常用的数据结构,在Java中有多种遍历Map的...遍历Map有多种方式,使用Map.Entry和Map.entrySet()是一种简洁易懂的方式。它可以直接获取Key和Value,不需要每次重复返回到Map中取得相对的值。

    素材_tilemap素材_使用TileMap快速构造2D关卡_

    TileMap(瓷砖地图)是一种高效且灵活的工具,常用于构建2D游戏的环境和场景。本素材包主要围绕如何使用TileMap来快速构造2D关卡,帮助开发者节省时间和精力,专注于游戏玩法的创新。 1. TileMap简介: TileMap是2...

    map遍历的四种方法

    在Java编程语言中,`Map`是一种常用的数据结构,用于存储键值对。为了能够有效地处理和操作这些键值对数据,熟练掌握遍历`Map`的方法至关重要。本文将详细介绍四种不同的遍历`Map`的方式,并通过具体的代码示例来...

    map遍历的三种方法

    Map 遍历是集合操作中的一种重要操作,一般来说,有三种方式来遍历 Map 集合:使用 values() 方法遍历、使用 keySet() 方法遍历和使用 entrySet() 方法遍历。 第一种方法:使用 values() 方法遍历 这个方法是最...

    C++ map使用

    C++中的`map`是一种关联式容器,它提供了一种基于键值对(Key-Value Pair)的数据存储方式。在C++标准库中,`map`位于`&lt;map&gt;`头文件内,它允许用户以键值对的形式组织数据,并且支持高效地查找、插入和删除操作。 *...

    详解Go开发Struct转换成map两种方式比较

    第一种方法是将结构体编码为JSON,然后再将JSON解码为map。具体做法是使用encoding/json包的Marshal和Unmarshal函数。这种转换方法的优点是实现简单,对大多数基本类型和一些复杂的类型(如slice、map、指针)都是...

    javascript 中Map的使用

    JavaScript中的Map对象是ES6引入的一种新的数据结构,它提供了关联键值对的存储方式,与传统的对象不同,Map的键可以是任何类型的值,包括基本类型、对象甚至是其他Map实例。这一特性使得Map在处理大量复杂数据或者...

    MapServer使用笔记

    地图数据的发布主要通过Mapfile进行,这是一种配置文件,类似于ArcGIS Server和GeoServer的XML配置。Mapfile包含了地图层、投影、样式等信息,其后缀为.map。编写Mapfile有三种方式: 1. 手工编写:参照官方文档,但...

    java中map的使用实例

    遍历Map有多种方式,一种是使用`entrySet()`,它可以返回Map中所有的键值对: ```java for (Map.Entry, Integer&gt; entry : map.entrySet()) { System.out.println("Key: " + entry.getKey() + ", Value: " + entry....

    java集合MAP三种遍历

    在Java编程语言中,`Map`接口是一种非常重要的数据结构,它存储键值对,并确保每个键都是唯一的。本文将详细介绍Java中Map集合的三种遍历方法及其应用场景、优缺点等,帮助读者更好地理解和掌握Map的使用技巧。 ###...

    Map最常规的两种遍历方法

    在第一种方法中,我们使用了Map集合的values()方法,该方法返回一个Collection集合,包含了Map集合中的所有值。然后,我们使用Iterator迭代器来遍历该集合。下面是该方法的代码实现: ```java public static void ...

    VS MAP 文件使用

    其中,MAP 文件和 COD 文件是两种非常有用的资源,它们能够帮助开发者更精确地定位到导致崩溃的具体位置。 #### 二、MAP 文件的作用 MAP 文件,全称为 Memory Addressing Plan File,主要用于记录程序的内存映射...

    Map (c++实现的简易map)

    在C++编程中,`Map`是一种非常重要的数据结构,它允许我们以键值对的形式存储数据,其中每个键(key)都是唯一的,并且通过这个键可以快速访问对应的值(value)。`Map`通常用于存储关联数组,它提供了一种灵活的...

    配置route-map详解

    Route-Map 是一种路由选择策略,允许 Network Administrator 根据不同的路由策略来选择路由。Route-Map 通常用于路由重发布、路由选择、路由过滤等场景。 配置 Route-Map 的步骤: 1. 配置接口 IP:首先需要配置...

    java map 实现缓存技术

    总的来说,Java Map提供了一种简单而有效的方式实现缓存技术。开发者可以根据具体需求选择合适的Map实现,并结合各种策略来管理和维护缓存,以提升系统的响应速度和效率。在实际应用中,还可以考虑使用第三方库如...

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

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

    MAP的讲解利用

    在C++编程中,标准模板库(Standard Template Library, STL)提供了一种高效且方便的关联容器——map。本文将详细讲解map的特性和使用方法,帮助开发者更好地理解和运用这一强大的工具。 1. **map简介** map是一种...

    ResultSet 转为listmap

    ResultSet 转为 List&lt;Map&gt; 是一种常见的数据处理操作。在 Java 中,使用 JDBC 连接数据库时,通常会返回一个 ResultSet 对象,该对象包含了查询结果集的所有记录。为了方便数据处理和使用,我们需要将 ResultSet ...

Global site tag (gtag.js) - Google Analytics