Collection
数据结构,容器:
- 用来装对象…,等各种管理对象的容器。
- 容器有相同的操作标准:
- (1)增
- (2)删
- (3)改
- (4)查
- …
- Java给这些集合抽取两大接口:
- 1、Collection:
-
规范单值集合的接口,obj --》单身party
- 2、Map
-
规范对值集合的接口,(key,value) -->情侣party
- 一、Collection
- 1、Collection:接口
- (1)它是根接口
- (2)它没有直接的实现类,有更具体的子接口:List和Set…
- (3)有一些的元素是可以重复的,有些集合的元素是不能重复,有些集合的元素是有序的,有些集合的元素是无序的
- 2、API
- (1)添加
- add(Object obj):添加一个元素
- addAll(Collection c):添加多个元素
- (2)获取有效元素的个数
- int size()
- (3)是否包含
- contains(Object o) :判断o是否在当前的集合中
- containsAll(Collection c) :判断c是否是当前集合的子集
- (4)boolean isEmpty() :判断当前集合是否为空
- 等价于 集合对象.size()==0
- (5)remove(Object o):删除一个
- removeAll(Collection c):删除多个 this = this - this ∩ c
- clear():清空所有
- (6)retainAll(Collection<?> c) :保留交集 this = this ∩ c
- (7)Object[] toArray() :把集合中的元素用一个数组返回
迭代器
Collection系列的集合的遍历:挨个访问集合的元素
- (1)Object[] toArray():先返回数组,然后遍历数组
- (2)迭代器设计模式
- 每一个Collection系列的集合,内部都自带一个迭代器,类似于,每一趟公交车上都有自己的售票员
- java.util.Iterator:接口
- 它是所有售票员的标准接口。
- (1)判断是否还有下一个元素:hasNext()
- (2)访问它的下一个元素:next()
- (3)请下一个元素下车:remove()
- java.util.Iterator:迭代器接口,这个接口的实现类在每一种集合类中,例如:ArrayList内部有一个内部类实现了Iterator接口
- 这里声明为内部类有两个原因:
- (1)每一种集合的内部实现(物理结构不同),意味着对迭代器(售票员)的实现是不同的,每一种集合都要单独定制迭代器
- (2)内部类可以直接访问外部类的私有的属性,成员,迭代器就可以直接访问集合的私有的元素。
- (3)foreach:增强for循环
- foreach循环可以用于遍历数组、Collection系列的集合等容器。
- 语法结构:
- for(元素的类型 元素临时名称 : 数组和集合名){
- }
- 不同于普通for循环。
- for(int i=0; i<5; i++){
- }
- 什么样集合或容器类型可以使用foreach循环?
- 凡是实现了java.lang.Iterable接口(可迭代)的集合或容器都支持foreach循环
- foreach底层还是调用Iterator迭代器来遍历集合。