集合
1.集合的理解和好处
-
-
可以动态保存任意多个对象,使用比较方便
-
提供了一系列方便的操作对象的方法:add、remove、set、get等
-
使用集合添加,删除新元素的示意代码-简洁了
-
-
-
集合主要是两组(单列集合,双列集合)
-
Collection 接口有两个重要的子接口 List Set ,他们的实现子列都是单列集合
-
Map 接口的实现子类 HashMap TreeMap HashSet 是双列集合,存放的是K-V
-
2.Collection接口和常用方法
2.1 Collection方法
-
collection接口实现类的特点
public interface Collection<E> extends Iterable<E>
-
1.collection实现子类可以存放多个元素,每个元素可以是Object
2.有些collection的实现类,可以存放重复的元素,有些不可以
3.有些collection的实现类,有些是有序的(List),有些不是有序(Set)
4.collection接口没有直接的实现子类,是通过它的子接口Set和List来实现的
-
-
add:添加单个元素
-
remove:删除指定元素
-
contains:查找元素是否存在
-
size:获取元素个数
-
isEmpty:判断是否为空
-
clear:清空
-
addAll:添加多个元素
-
containsAll:查找多个元素是否都存在
-
removeAll:删除多个元素
-
2.2 迭代器
-
Iterator对象称为迭代器,主要用于遍历Collection集合中的元素
-
所有实现了Collection接口的集合类都有一个iterator方法,用以返回一个实现了iterator接口的对象,即可以返回一个迭代器
-
Iterator仅用于遍历集合,本身并不存放对象
Iterator iterator = col.iterator(); while(iterator.hasNext){//快捷键 itit Object obj = iterator.next(); System.out.println(obj); }
4.增强for循环
for(Object obj:col){ System.out.println(obj); }
3.List接口和常用方法
3.1 List接口基本介绍
List接口是Collection接口的子接口
-
List集合类中元素有序(即添加顺序和取出顺序一致)、且可重复
-
List集合中的每个元素都有其对应的顺序索引,即支持索引
-
List容器中的元素都对应一个整数型的序号记载其在容器中的位置,可以根据序号存取容器中的元素
3.2 ArrayList底层结构和源码分析
-
ArrayList中维护了一个Object类型的数组elementData
-
当创建ArrayList对象时,如果使用的是无参构造器,则初始elementData容量为0,第一次添加,则容量elementData为10,如需要再次扩容,则扩容elementData为1.5倍
-
如果使用的是指定大小的构造器,则初始elementData容量为指定大小,如果需要扩容,则直接扩容elementData为1.5倍
3.3 Vector
-
Vector底层也是一个对象数组
-
Vector是线程同步的,即线程安全
-
在开发中,需要线程同步安全时,考虑使用Vector