第7章 集合类_补充案例

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

List继承过来的。为了熟悉ArrayList集合的使用,本案例将演示ArrayList集合的定义、存储元素和取出元素。

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

1) 编写一个类Example03

2) 在类中定义一个ArrayList集合 3) 用add()方法向集合中添加元素

4) 用get()方法获取集合中的指定元素,由于ArrayList集合的索引的取值范围是从0开始的,最

后一个索引是size-1。所以,要获取集合中的第2个元素应该是get(1)。

二、案例实现

import java.util.*; public class Example03{

public static void main(String[] args) {

ArrayList array = new ArrayList(); array.add(\array.add(\array.add(\array.add(\

array.add(\

System.out.println(array); }

}

System.out.println(\第2个元素是:\

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

图7-4 运行结果

三、案例总结

1、在ArrayList内部封装了一个长度可变的数组对象,当存入的元素超过数组长度时,ArrayList会在 内存中分配一个更大的数组来存储这些元素,因此可以将ArrayList集合看作一个长度可变的数组。

2、索引位置为1的元素是集合中的第二个元素,这就说明集合和数组一样,索引的取值范围是从0开始的,最后一个索引是size-1,在访问元素时一定要注意索引不可超出此范围,否则会抛出角标越界异常IndexOutOfBoundsException。

3、由于ArrayList集合的底层是使用一个数组来保存元素,在增加或删除指定位置的元素时,会导致创建新的数组,效率比较低,因此不适合做大量的增删操作。但这种数组的结构允许程序通过索引的方式来访问元素,因此使用ArrayList集合查找元素很便捷。

5

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

案例7-4 LinkedList集合的特殊方法

一、案例描述

1、 考核知识点

编号:00107005

名称:LinkedList集合

2、 练习目标

? 了解LinkedList集合的特点

? 掌握LinkedList集合的特殊方法的使用

3、 需求分析

ArrayList集合在查询元素时速度很快,但在增删元素时效率较低,为了克服这种局限性,可以使用List接口的另一个实现类LinkedList。LinkedList集合除了对于元素的增删操作具有很高的效率,还专门针对元素的增删操作定义了一些特有的方法。为了熟悉这些特殊的方法,本案例将演示如何使用LinkedList中的特殊方法对集合进行增删操作。

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

1) 编写一个类Example04,在该类中定义一个LinkedList集合 2) 分别使用addFirst()和addLast()方法向集合中添加元素 3) 使用peekFirst()方法获取集合中的第一个元素

4) 使用pollFirst()方法获取并移除集合中的第一个元素 5) 使用pollLast()方法获取并移除集合中的最后一个元素

6) 此时,集合中应该没有元素了,用peekLast()方法获取集合中的最后一个元素,由于集合为

空,应该返回NULL

二、案例实现

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

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

LinkedList link = new LinkedList(); link.addFirst(\ link.addLast(\

//将指定元素插入此集合的开头 //将指定元素添加到此集合的结尾

System.out.println(link.peekFirst());//获取但不移除此集合的第一个元素 System.out.println(link.pollFirst());//获取但不移除此集合的最后一个元素 System.out.println(link);

System.out.println(link.pollLast());//获取并移除此集合的第一个元素 System.out.println(link);

System.out.println(link.peekLast());//获取并移除此集合的最后一个元素

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

6

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

图7-5 运行结果

三、案例总结

1、LinkedList集合内部维护了一个双向循环链表,链表中的每一个元素都使用引用的方式来记住它的前一个元素和后一个元素,从而可以将所有的元素彼此连接起来。当插入一个新元素时,只需要修改元素之间的这种引用关系即可,删除一个节点也是如此。正因为这样的存储结构,所以LinkedList集合对于元素的增删操作具有很高的效率。

2、在本案例中,所用的方法及其功能具体如下:

1) peekFirst()方法用于获取LinkedList集合中的第一个元素,如果此列表为空则返回NULL 2) peekLast()方法用于获取LinkedList集合中的最后一个元素,如果此列表为空则返回NULL 3) pollFirst()方法用于获取并移除LinkedList集合中的第一个元素,如果此列表为空则返回NULL 4) pollLast()方法用于获取并移除LinkedList集合中的最后一个元素,如果此列表为空则返回NULL 5) addFirst()方法用于添加LinkedList集合中的第一个元素 6) addLast()方法用于添加LinkedList集合中的最后一个元素

案例7-5 Iterator遍历集合元素

一、案例描述

1、 考核知识点

编号:00107006 名称:Iterator接口

2、 练习目标

? 掌握Iterator迭代器的使用

3、 需求分析

在程序开发中,经常需要遍历集合中的所有元素。针对这种需求,JDK专门提供了一个接口Iterator。为了使初学者熟悉Iterator迭代器的使用,本案例将演示如何使用Iterator迭代器遍历集合中的元素。

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

1) 编写一个类Example05

2) 在类中定义一个List集合,并向集合中添加数据 3) 通过调用List集合的iterator()方法获得迭代器对象

4) 在while循环条件中使用hashNext()方法判断集合中是否存在下一个元素,如果存在,则调用

next()方法将元素取出,否则说明已到达了集合末尾,停止遍历元素

7

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

二、案例实现

定义Example05类,其代码如下:

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

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

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

Iterator it = list.iterator(); //获取迭代器对象 while (it.hasNext()) { //判断是否还有元素 }

Object obj = it.next(); //取出元素 System.out.println(obj);

//向集合中添加元素

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

图7-6 运行结果

三、案例总结

1、需要注意的是,在通过next()方法获取元素时,必须保证要获取的元素存在,否则,会抛出NoSuchElementException异常。

2、Iterator迭代器对象在遍历集合时,内部采用指针的方式来跟踪集合中的元素,图7-7演示了Iterator对象迭代元素的过程。

图7-7 遍历元素过程图

8

联系客服:779662525#qq.com(#替换为@) 苏ICP备20003344号-4