第7章 集合类 - 补充案例(3)

2019-09-01 20:40

博学谷——让IT教学更简单,让IT学习更有效

}

}

List list = new ArrayList(); list.add(\list.add(\list.add(\list.add(\

ListIterator lit = list.listIterator(); while (lit.hasNext()) { }

// 逆向遍历集合

System.out.println(\以下是逆向遍历\while (lit.hasPrevious()) { }

System.out.println(lit.previous()); Object o = lit.next();

// 遍历到abc4元素时,向集合中添加一个元素 if (\ }

System.out.println(o);

lit.add(\

运行结果如图7-9所示。

图7-9 运行结果

三、案例总结

1、ListIterator迭代器的特有方法,如表7-3所示。

表7-3 ListIterator迭代器的特有方法 方法声明 void add(Object o) boolean hasPrevious() Object previous() void remove() 功能描述 将指定的元素插入列表(可选操作) 如果以逆向遍历列表,列表迭代器有多个元素,则返回 true 返回列表中的前一个元素 从列表中移除由 next 或 previous 返回的最后一个元素(可选操作) 2、在本案例中,使用hasPrevious()方法判断是否存在上一个元素,如果存在,则通过previous()方法将元素取出,否则,则表示到达了集合的末尾,没有要遍历的元素。

3、在遍历过程中,如果想增加元素同样不能调用集合对象的add()方法,此时需要使用ListIterator提

11

博学谷——让IT教学更简单,让IT学习更有效

供的add()方法,否则会出现并发修改异常ConcurrentModificationException。需要注意的是,ListIterator迭代器只能用于List集合。

案例7-8 用Enumeration迭代Vector集合

一、案例描述

1、 考核知识点

编号:00107009

名称:Enumeration接口

2、 练习目标

? 掌握如何使用Enumeration迭代器的特有方法遍历Vector集合中的元素

3、 需求分析

在JDK1.2以前还没有Iterator接口的时候,遍历集合需要使用Enumeration迭代器接口。由于很多程序中依然在使用Enumeration,因此了解该接口的用法是很有必要的。Vevtor集合是List接口的一个实现类。为了让初学者能熟悉Enumeration迭代器的用法,本案例将演示如何用Enumeration迭代器遍历Vector集合。

4、 设计思路(实现原理)

1) 编写一个类Example08,在该类中定义一个Vector集合v 2) 向集合v中添加四个元素

3) 用Enumeration迭代器遍历集合v,输出集合中的每一个元素

二、案例实现

import java.util.*; public class Example08 { }

public static void main(String[] args) { }

Vector v = new Vector(); //创建Vector集合 v.addElement(\秦始皇\v.addElement(\成吉思汗\v.addElement(\朱元璋\v.addElement(\李世民\

Enumeration e = v.elements();

while (e.hasMoreElements()) { //Enumeration迭代器遍历Vector集合 }

String name = (String) e.nextElement(); System.out.println(name);

运行结果如图7-10所示。

12

博学谷——让IT教学更简单,让IT学习更有效

图7-10 运行结果

三、案例总结

1、JDK中提供了一个Vevtor集合,该集合是List接口的一个实现类,用法与ArrayList完全相同,区别在于Vector集合是线程安全的,而ArrayList集合是线程不安全的。在Vector类中提供了一个elements()方法用于返回Enumeration对象,通过Enumeration对象就可以遍历该集合中的元素。

2、在本案例中,使用Enumeration迭代器时,使用一个while循环对集合中的元素进行迭代,其过程与Iterator迭代的过程类似,通过hasMoreElements()方法循环判断是否存在下一个元素,如果存在,则通过nextElement()方法逐一取出每个元素。

案例7-9 HashSet集合的存储

一、案例描述

1、 考核知识点

编号:00107010 名称:HashSet集合

2、 练习目标

? 了解HashSet集合的存储特点 ? 掌握HashSet集合的用法

3、 需求分析

HashSet是Set接口的一个实现类,它所存储的元素是不可重复的,并且元素都是无序的。为了让初学者熟悉HashSet集合的用法,本案例将针对HashSet集合中元素不可重复的特点,对HashSet集合的存储和遍历过程进行演示。

4、 设计思路(实现原理)

1) 编写一个类Example09,在该类中定义一个HashSet集合hs 2) 向集合hs中添加6个元素,其中有一些重复的元素 3) 用size()方法获取添加完元素后集合中元素的个数 4) 用Iterator迭代器遍历集合的每一个元素 5) 观察在输出结果中,是否存在重复的元素

二、案例实现

import java.util.*; public class Example09 {

public static void main(String[] args) {

13

博学谷——让IT教学更简单,让IT学习更有效

}

}

// 创建HashSet集合

HashSet hs = new HashSet();

//向HashSet集合中添加元素,其中包括重复元素 hs.add(\ hs.add(\hs.add(\hs.add(\hs.add(\hs.add(\// 输出集合中元素的个数

System.out.println(\添加后集合中元素个数:\// 输出集合中每一个元素

Iterator it = hs.iterator();

System.out.println(\添加后集合中包含以下元素:\while (it.hasNext()) { }

System.out.println(it.next());

运行结果如图7-11所示。

图7-11 运行结果

三、案例总结

1、HashSet是Set接口的一个实现类,它所存储的元素是不可重复的,并且元素都是无序的。当向

HashSet集合中添加一个对象时,首先会调用该对象的hashCode()方法来确定元素的存储位置,然后再调用对象的equals()方法来确保该位置没有重复元素。

2、在本案例中,首先通过add()方法向HashSet集合依次添加了六个字符串,然后通过Iterator迭代器遍历所有的元素并输出打印。从打印结果可以看出取出元素的顺序与添加元素的顺序并不一致,并且重复存入的字符串对象\和\被去除了,只添加了一次。

案例7-10 将Object类存入HashSet

一、案例描述

1、 考核知识点

14

博学谷——让IT教学更简单,让IT学习更有效

编号:00107010 名称:HashSet集合

2、 练习目标

? 掌握如何将对象存入HashSet集合并且去除重复对象

3、 需求分析

HashSet集合之所以能确保不出现重复的元素,是因为它在添加对象时,会先调用该对象的hashCode()方法来确定元素的存储位置,再调用对象的equals()方法来确保该位置没有重复元素。为了将Object类存入HashSet集合,本案例将针对如何重写Object类中的hashCode()和equals()方法去除重复的Object对象进行演示。

4、 设计思路(实现原理)

1) 设计一个Person类,在该类中定义两个变量name和age 2) 在Person类中重写hashCode()和equals()方法

3) 编写类Example10,在该类中定义一个HashSet集合

4) 将Person对象存入HashSet集合中,其中含有重复的Person对象 5) 遍历HashSet集合中的元素,观察结果是否含有重复的对象

二、案例实现

设计Person类,其代码如下:

class Person {

private String name; private int age;

public Person(String name, int age) { }

// 重写hashCode方法,返回name属性的哈希值 public int hashCode() { }

// 重写equals方法

public boolean equals(Object obj) { }

// 重写toString()方法 public String toString() { }

15

return \if (this == obj) }

return false;

return true;

Person p = (Person) obj;

return this.name.equals(p.name) && this.age == p.age; if (obj instanceof Person) { return name.hashCode() + age * 2; this.name = name; this.age = age;


第7章 集合类 - 补充案例(3).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:质量经理工作手册

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: