基本概念
什么是集合?
数组:存储相同数据类型的容器,存在添加、删除、修改的方法
个人总结来讲:集合是存放数据的容器,存放对象引用的容器,功能上同数组相同,但是操作比数组简便
集合与数组区别?
集合能够存放对象引用,而数组不能,集合比数组操作简便
集合的分类
单列集合
什么是单列集合?
单列集合只能存储对象,不能存储基本数据类型
双列集合
什么是双列集合?
双列集合是每个元素都有键与值两部分组成的集合,记录的是键值对对应关系,即通过键可以找到值
键必须是唯一,值可以重复
集合对象的创建
Collection 是一个接口。必须通过子类来创建对象,采用的子类 ArrayList
集合常用的方法
① add(obj)/addAll(collection) 添加 /将集合中所有元素添加到该集合。
② contains(Object o) 判断是否包含参数元素。
注意 : 对于自定义类来说,如果需要判断包含,最好重写equals方法,保证判断结果相同。
③ isEmpty() 判断集合是否是空集合。如果是,返回true。
④ remove(Object o) 将参数从集合中移除。
注意 : 对于自定义类来说,如果需要移除,最好重写equals方法,保证结果正确。
⑤ size() 集合元素个数 就是length()
集合对象的遍历形式
1》 通过数组
toArray() 转换为对象数组
2》 Iterator。
iterator() 返回迭代器接口对象。
3》 Iterator
a) hasNext() 判断集合中是否存在元素
b) next() 返回集合当前的元素值
c) remove() 移除该位置的集合元素。
注意: NoSuchElementException 表示集合中已经到了结尾,该异常称为没有该元素异常,
一旦报该异常,证明无法获取集合中的元素。
集合的泛型
① 格式 :
<要存储的数据类型>
② 作用:
1》 将运行期的类型转换异常转变为编译期的检测,减少了类型转换异常的发生。
2》 避免了向下转型。
注意 :对于迭代器来说, Iterator后面的泛型必须带,如果不带,就是Object类型。
③ 集合泛型的特点:
1》 1.7jdk之后,菱形技术 <>
2》 可擦除技术。在class文件中不存在集合的泛型
List接口
1.List接口:
① 特点:
1》有序(插入与存储顺序相同。)
2》可重复
3》 可以插入null。
2.常用方法:
① add(index,E) 在指定索引位置插入元素
② get(int index) 返回index位置的元素
③ listIterator() 返回ListIterator迭代器。该迭代器是List集合特有的迭代器。
1》hasPrevious() 判断集合中是否存在元素,逆序遍历。
2》previous() 返回集合中的元素 ,逆序遍历。
④ remove(int index) 移除index位置的元素。
⑤ set(int index, E element) 将index位置的元素替换为参数。
⑥ subList(int fromIndex, int toIndex) 截子集合 包括开始索引不包括 结束索引。