博学谷——让IT教学更简单,让IT学习更有效
案例7-13 操作HashMap集合的方法
一、案例描述
1、 考核知识点
编号:00107014
名称:HashMap集合
2、 练习目标
? 了解HashMap集合的存储特点
? 掌握如何使用操作HashMap集合的方法
3、 需求分析
Map接口用于存储具有对应关系的数据。它的每个元素都包含一个键对象Key和值对象Value,键和值对象之间存在映射。HashMap集合是Map接口的一个实现类。为了让初学者能熟悉使用HashMap集合,本章将采用使用不同方法对HashMap集合进行操作,学习HashMap集合的使用方法。
4、 设计思路(实现原理)
1) 编写类Example13,创建一个HashMap集合,并向集合中添加元素 2) 使用一系列方法分别对定义的集合进行增加、移除、判断等操作 3) 运行程序,根据输出结果,分析这些方法对HashMap集合的操作
二、案例实现
编写Example13类,具体代码如下:
import java.util.*; public class Example13 {
public static void main(String[] args) {
// 创建集合对象
Map map = new HashMap(); // 添加元素
map.put(\林青霞\map.put(\林志玲\map.put(\林志颖\
// 添加元素,如果键存在,就替换,返回以前与key关联的值。 System.out.println(map.put(\林志炫\// V remove(Object key):根据指定的键删除键值对。
System.out.println(\// 判断指定的键是否在集合中存在
System.out.println(\System.out.println(\// 判断指定的值是否在集合中存在
System.out.println(\林志颖\// 判断集合是否为空
21
博学谷——让IT教学更简单,让IT学习更有效
}
}
System.out.println(\// 集合中元素的个数
System.out.println(\// 输出集合对象名称
System.out.println(\
运行结果如图7-17所示。
图7-17 运行结果
三、案例总结
在本案例中,从运行结果可以看出:
1)集合中键为czbk003对应的值是\林志玲\。
2)由于集合中存在键czbk003,所以程序做map.put(\林志炫\操作时,值会替换为\林志
炫\。所以删除键为czbk003的对象时,程序输出remove:\林志炫\。由此证实了Map中的键必须是唯一的,不能重复。如果存储了相同的键,后存储的值则会覆盖原有的值,简而言之就是,键相同,值覆盖。
3)\在集合中存在,所以输出true。\在集合中不存在,输出false. 4) 值\林志颖\在集合中存在,所以输出true。
5)因为集合不为空,所以map.isEmpty()返回false。
案例7-14 遍历Map中所有的键值
一、案例描述
1、 考核知识点
编号:00107014
名称:HashMap集合
2、 练习目标
? 掌握遍历Map中所有的键值两种方法
3、 需求分析
在程序开发中,经常需要取出Map中所有的键和值。为了让大家熟悉遍历Map中所有的键值,本案例将演示遍历Map中所有的键值对的两种遍历方式。
4、 设计思路(实现原理)
1) 编写类Example14,在该类中创建Map集合并向集合中添加元素
22
博学谷——让IT教学更简单,让IT学习更有效
2) 使用第一种方式,遍历集合元素,先获取键的集合,再获取键所对应的值 3) 使用第二种方式,先获取集合中键值对映射关系,再从映射关系中获得键和值
二、案例实现
import java.util.*; public class Example14 { }
public static void main(String[] args) { }
// 创建集合对象
Map map = new HashMap(); // 添加元素
map.put(\李世民\map.put(\朱元璋\map.put(\武则天\
System.out.println(\方式一遍历:\// 遍历1:先获取键的集合,再获取键所对应的值 Set keyset = map.keySet(); for (Object key : keyset) { }
System.out.println(\方式二遍历:\
// 遍历2:先获取集合中键值对映射关系,再从关系中获得键和值 Set
Object key = me.getKey(); Object value = me.getValue();
System.out.println(key + \Object value = map.get(key);
System.out.println(key + \
运行结果如图7-18所示。
图7-18 运行结果
23
博学谷——让IT教学更简单,让IT学习更有效
三、案例总结
1、在本案例中,第一种遍历Map的方式是首先调用Map对象的KeySet()方法,获得存储Map中所有键的Set集合,然后通过foreach循环遍历集合中的所有的键,最后通过调用get(key)方法,根据键获取对应的值。
2、本案例中的第二种遍历Map的方式,首先调用Map对象的entrySet()方法获得存储Map中所有映射的Set集合,这个集合中存放了Map.Entry类型的元素(Entry是Map接口内部类),每个Map.Entry对象代表Map中的一个键值对,然后迭代Set集合,获得每一个映射对象,并分别调用映射对象的getKey()和getValue()方法获取键和值。
3、在Map中,还提供了一个values()方法,通过这个方法可以直接获取Map中存储所有值的Collection集合。获取代码如下:
Collection values = map.values(); }
for (Object value : values ) {
System.out.println(value);
将此代码替换案例中的两种遍历方法的代码,运行结果如图7-19所示。
图7-19 运行结果
案例7-15 TreeMap集合的存取
一、案例描述
1、 考核知识点
编号:00107015 名称:TreeMap集合
2、 练习目标
? 了解TreeMap集合的存储特点 ? 掌握TreeMap集合存储和迭代方法
3、 需求分析
TreeMap集合用来存储键值映射关系,其中不允许出现重复的键。在TreeMap中是通过二叉树的原理来保证键的唯一性,因此TreeMap中所有的键是按照某种顺序排列的。为了熟悉TreeMap集合的使用,本案例将使用TreeMap集合获取一个字符串中每一个字母出现的次数,在实现这一功能的过程中掌握TreeMap集合存储和迭代方法。
4、 设计思路(实现原理)
1) 编写一个类Example15,要获取字符串\中,每一个字母出现次数,先将字符
串转化成数组
2) 定义一个TreeMap集合,字符出现的次数作为键,每一个字符作为值
24