第7章 集合类_补充案例 下载本文

内容发布更新时间 : 2024/11/5 21:46:43星期一 下面是文章的全部内容请认真阅读。

博学谷——让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 mapSet = map.entrySet(); for (Map.Entry me : mapSet) { }

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