在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的...遍历Map有多种方式,使用Map.Entry和Map.entrySet()是一种简洁易懂的方式。它可以直接获取Key和Value,不需要每次重复返回到Map中取得相对的值。
TileMap(瓷砖地图)是一种高效且灵活的工具,常用于构建2D游戏的环境和场景。本素材包主要围绕如何使用TileMap来快速构造2D关卡,帮助开发者节省时间和精力,专注于游戏玩法的创新。 1. TileMap简介: TileMap是2...
在Java编程语言中,`Map`是一种常用的数据结构,用于存储键值对。为了能够有效地处理和操作这些键值对数据,熟练掌握遍历`Map`的方法至关重要。本文将详细介绍四种不同的遍历`Map`的方式,并通过具体的代码示例来...
Map 遍历是集合操作中的一种重要操作,一般来说,有三种方式来遍历 Map 集合:使用 values() 方法遍历、使用 keySet() 方法遍历和使用 entrySet() 方法遍历。 第一种方法:使用 values() 方法遍历 这个方法是最...
C++中的`map`是一种关联式容器,它提供了一种基于键值对(Key-Value Pair)的数据存储方式。在C++标准库中,`map`位于`<map>`头文件内,它允许用户以键值对的形式组织数据,并且支持高效地查找、插入和删除操作。 *...
第一种方法是将结构体编码为JSON,然后再将JSON解码为map。具体做法是使用encoding/json包的Marshal和Unmarshal函数。这种转换方法的优点是实现简单,对大多数基本类型和一些复杂的类型(如slice、map、指针)都是...
JavaScript中的Map对象是ES6引入的一种新的数据结构,它提供了关联键值对的存储方式,与传统的对象不同,Map的键可以是任何类型的值,包括基本类型、对象甚至是其他Map实例。这一特性使得Map在处理大量复杂数据或者...
地图数据的发布主要通过Mapfile进行,这是一种配置文件,类似于ArcGIS Server和GeoServer的XML配置。Mapfile包含了地图层、投影、样式等信息,其后缀为.map。编写Mapfile有三种方式: 1. 手工编写:参照官方文档,但...
遍历Map有多种方式,一种是使用`entrySet()`,它可以返回Map中所有的键值对: ```java for (Map.Entry, Integer> entry : map.entrySet()) { System.out.println("Key: " + entry.getKey() + ", Value: " + entry....
在Java编程语言中,`Map`接口是一种非常重要的数据结构,它存储键值对,并确保每个键都是唯一的。本文将详细介绍Java中Map集合的三种遍历方法及其应用场景、优缺点等,帮助读者更好地理解和掌握Map的使用技巧。 ###...
在第一种方法中,我们使用了Map集合的values()方法,该方法返回一个Collection集合,包含了Map集合中的所有值。然后,我们使用Iterator迭代器来遍历该集合。下面是该方法的代码实现: ```java public static void ...
其中,MAP 文件和 COD 文件是两种非常有用的资源,它们能够帮助开发者更精确地定位到导致崩溃的具体位置。 #### 二、MAP 文件的作用 MAP 文件,全称为 Memory Addressing Plan File,主要用于记录程序的内存映射...
在C++编程中,`Map`是一种非常重要的数据结构,它允许我们以键值对的形式存储数据,其中每个键(key)都是唯一的,并且通过这个键可以快速访问对应的值(value)。`Map`通常用于存储关联数组,它提供了一种灵活的...
Route-Map 是一种路由选择策略,允许 Network Administrator 根据不同的路由策略来选择路由。Route-Map 通常用于路由重发布、路由选择、路由过滤等场景。 配置 Route-Map 的步骤: 1. 配置接口 IP:首先需要配置...
总的来说,Java Map提供了一种简单而有效的方式实现缓存技术。开发者可以根据具体需求选择合适的Map实现,并结合各种策略来管理和维护缓存,以提升系统的响应速度和效率。在实际应用中,还可以考虑使用第三方库如...
// GOF给出的定义为:提供一种方法访问一个容器(container)对象中的各个元素, // 而又不需暴露该对象的内部细节。 // 学习set对象容器的使用 // set容器中的对象不允许重复 // set容器接口的实现类有HashSet和 ...
在C++编程中,标准模板库(Standard Template Library, STL)提供了一种高效且方便的关联容器——map。本文将详细讲解map的特性和使用方法,帮助开发者更好地理解和运用这一强大的工具。 1. **map简介** map是一种...
ResultSet 转为 List<Map> 是一种常见的数据处理操作。在 Java 中,使用 JDBC 连接数据库时,通常会返回一个 ResultSet 对象,该对象包含了查询结果集的所有记录。为了方便数据处理和使用,我们需要将 ResultSet ...