Java-第06章-容器(讲义)

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

容器

1Collection

1.1集合类概述

1.1.1为什么出现集合类?

–面向对象语言对事物的体现都是以对象的形式,所以为了方便对多个对象的操作,Java就提供了集合类。

1.1.2数组和集合类同是容器,有何不同?

–数组虽然也可以存储对象,但长度是固定的;集合长度是可变的。

数组中可以存储基本数据类型,集合只能存储对象。

1.1.3集合类的特点

集合只用于存储对象,集合长度是可变的,集合可以存储不同类型的对象。

1.2Collection接口概述

–Collection 层次结构中的根接口。Collection 表示一组对象,这些对象也称为collection 的元素。一些collection 允许有重复的元素,

而另一些则不允许。一些collection 是有序的,而另一些则是无序

的。

1.3Collection接口成员方法

1.3.1基本方法

•boolean add(E e)

•boolean remove(Object o)

•void clear()

•boolean contains(Object o)

•boolean isEmpty()

•int size()

•boolean addAll(Collection c)

•boolean removeAll(Collection c)

•boolean containsAll(Collection c)

•boolean retainAll(Collection c)

到这里的方法案例演示清楚即可

1.3.2Object[] toArray()

–把集合转成数组,可以实现集合的遍历

演示:

1.3.

2.1练习

改进:如果想单独显示名字和年龄怎么办?向下转型(强制转换)

1.3.3Iterator iterator()

–迭代器,集合的专用遍历方式

第一版:

第二版:

第三版:for循环改写

1.3.3.1练习:

问题:

问题讲解

2Iterator接口

2.1Iterator接口概述

–对collection 进行迭代的迭代器

–依赖于集合而存在

2.2Iterator接口成员方法

•boolean hasNext()

• E next()

2.3Iterator接口的使用和原理讲解

•Iterator接口的使用讲解

•Iterator接口的原理讲解

–为什么不定义成一个类,而是一个接口

–看源码是如何实现的

将Iterable、iterator、Collection、ArrayList放到一起讲

最后引出在ArrayList中用内部类的方式实现了迭代器接口。

3List接口

3.1List接口概述

–有序的collection(也称为序列)。此接口的用户可以对列表中每个元素的插入位置进行精确地控制。用户可以根据元素的整数索引

(在列表中的位置)访问元素,并搜索列表中的元素。

–与set 不同,列表通常允许重复的元素。

3.2List案例

–存储字符串并遍历

–存储自定义对象并遍历

3.3List接口成员方法

•void add(int index,E element)

• E remove(int index)

• E get(int index)

• E set(int index,E element)

逐一演示

不用迭代器的遍历演示: 使用size()方法+get()方法

for(int i = 0; i< list.size(); i++){

System.out.println(list.get(i));

}

•ListIterator listIterator()

•boolean hasPrevious()

• E previous()

ListIterator 演示

hasNext() + next()

hasPrevious() + previous()

必须先正向再逆向…

所以实际开发不用…

3.4ConcurrentModificationException

–现象

–原因

–解决方案

3.4.1现象:

在使用iterator遍历集合的时候使用add向其中添加元素:

3.4.2原因

Iterator是依赖集合存在的,在先拿到iterator对象后,遍历的过程中又修改了集合,此时,iterator是不知道的,所以会产生并发修改异常。

3.4.3解决方案

1.在遍历的时候使用iterator修改,但是Iterator中没有添加功能,所以需

要使用List特有的迭代器ListIterator。

2.不使用迭代器,使用for循环普通遍历

两者唯一的不同是:添加的位置。。。

4常见数据结构

4.1栈

4.2队列

4.3线性表的顺序存储(数组、ArrayList、Vector) 4.4线性表的链式存储(LinkedList)

4.5树

在哪里在哪里

相关文档
最新文档