Java集合框架

集合框架:用于存储数据的容器。集合框架是为表示和操作集合而规定的一种统 一 的标准的体系结构。

任何集合框架都包含三大块内容:对外的接口、接口的实现和对集合运算的算法。

例如:spring+springMVC+mybatis的框架集合成SSM框架。

接口:表示集合的抽象数据类型。接口允许我们操作集合时不必关注具体实现,从而 达到“多态”。在面向对象编程语言中,接口通常用来形成规范。

实现:集合接口的具体实现,是重用性很高的数据结构。

算法:在一个实现了某个集合框架中的接口的对象身上完成某种有用的计算的方法, 例如查找、排序等。这些算法通常是多态的,因为相同的方法可以在同一个接口被多 个类实现时有不同的表现。事实上,算法是可复用的函数。

它减少了程序设计的辛劳。集合框架通过提供有用的数据结构和算法使你能集中注意 力于你的程序的重要部分上,而不是为了让程序能正常运转而将注意力于低层设计上。

通过这些在无关API之间的简易的互用性,使你免除了为改编对象或转换代码以便联 合这些API而去写大量的代码。 它提高了程序速度和质量。

特点对象封装数据,对象多了也需要存储。集合用于存储对象。

对象的个数确定可以使用数组,对象的个数不确定的可以用集合。因为集合是可变长 度的。集合和数组的区别数组是固定长度的;集合可变长度的。

数组可以存储基本数据类型,也可以存储引用数据类型;集合只能存储引用数据类型。

数组存储的元素必须是同一个数据类型;集合存储的对象可以是不同数据类型。

数据结构:就是容器中存储数据的方式。

对于集合容器,有很多种。因为每一个容器的自身特点不同,其实原理在于每个容器的 内部数据结构不同。

集合容器在不断向上抽取过程中,出现了集合体系。在使用一个体系的原则:参阅顶层 内容。建立底层对象。

使用集合框架的好处,简洁代码的繁琐

容量自增长;

提供了高性能的数据结构和算法,使编码更轻松,提高了程序速度和质量;

允许不同 API 之间的互操作,API之间可以来回传递集合;

可以方便地扩展或改写集合,提高代码复用性和可操作性。

通过使用JDK自带的集合类,可以降低代码维护和学习新API成本。

Iterator接口

Iterator接口,用于遍历集合元素的接口。

在Iterator接口中定义了三个方法:

修饰与类型 方法与描述

boolean hasNext() 如果仍有元素可以迭代,则返回true。

E next() 返回迭代的下一个元素。

void remove() 从迭代器指向的 collection 中移除迭代器返回的最后一个元素 (可选操作)。

每一个集合都有自己的数据结构(就是容器中存储数据的方式),都有特定的取出自己内 部元素的方式。为了便于操作所有的容器,取出元素。将容器内部的取出方式按照一个 统一的规则向外提供,这个规则就是Iterator接口,使得对容器的遍历操作与其具体 的底层实现相隔离,达到解耦的效果。

也就说,只要通过该接口就可以取出Collection集合中的元素,至于每一个具体的容 器依据自己的数据结构,如何实现的具体取出细节,这个不用关心,这样就降低了取出 元素和具体集合的耦合性。

使用Iterator迭代器进行删除集合元素,则不会出现并发修改异常。

因为:在执行remove操作时,同样先执行checkForComodification(),然后会执行 ArrayList的remove()方法,该方法会将modCount值加1,这里我们将 expectedModCount=modCount,使之保持统一。

ListIterator接口

ListIterator是一个功能更加强大的迭代器, 它继承于Iterator接口,只能用于各 种List类型的访问。可以通过调用listIterator()方法产生一个指向List开始处的 ListIterator, 还可以调用listIterator(n)方法创建一个一开始就指向列表索引为n 的元素处的ListIterator。

特点

允许我们向前、向后两个方向遍历 List;

在遍历时修改 List 的元素;

遍历时获取迭代器当前游标所在位置。

常用API

修饰与类型 方法与描述

void add(E e) 将指定的元素插入到列表 (可选操作)。

boolean hasNext() 如果此列表迭代器在前进方向还有更多的元素时,返回 true。

boolean hasPrevious() 如果此列表迭代器在相反方向还有更多的元素时,返回 true。

E next() 返回列表中的下一个元素和光标的位置向后推进。

int nextIndex() 返回调用 next()后返回的元素索引。

E previous() 返回列表中的上一个元素和光标的位置向前移动。

int previousIndex() 返回调用previous() 后返回的元素索引 。

void remove() 删除列表中调用next()或previous()的返回最后一个元素。

void set(E e) 用指定元素替换列表中调用next()或previous()的返回最后一个元 素。

Collection接口

所有集合类都位于java.util包下。Java的集合类主要由两个接口派生而出: Collection和Map,Collection和Map是Java集合框架的根接口,这两个接口又包含 了一些子接口或实现类。

Collection一次存一个元素,是单列集合;

Map一次存一对元素,是双列集合。Map存储的一对元素:键–值,键(key)与值(value) 间有对应(映射)关系。

集合工具类Collections

Collections:集合工具类,方便对集合的操作。这个类不需要创建对象,内部提供的 都是静态方法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值