出现集合类的原因
面向对象语言对事物的体现都是以对象的形式,
所以为了方便对多个对象的操作,
就对对象进行存储,
集合就是存储对象最常用的一个方式.
数组和集合都是容器有何不同?
数组虽也可存储对象,
但长度是固定的,
集合长度是可变的,
数组中可以存储基本数据类型,
集合只能存储对象.
特点:
集合只用于存储对象,
集合长度是可变的,
集合可以存储不同类型的对象.
Collection ****
|--List:
元素是有序的,元素可以重复。因为该集合体系有索引。
|--ArrayList:
底层的数据结构使用的是数组结构。特点:查询速度很快。但是增删稍慢。线程不同步。50%
延长
|--LinkedList:
底层使用的链表数据结构。特点:增删速度很快,查询稍慢。线程不同步。
|--Vector:
底层是数组数据结构。被ArrayList
替代了。因为增删,查询效率都低。线程同步。100%
延长
元素不是很多,同时涉及增删与查询,建议使用ArrayList
|--Set
:元素是无序,元素不可以重复。
|--HashSet
:底层数据结构是哈希表。是线程不安全的。不同步。
|--TreeSet
:可以对Set
集合中的元素进行排序。底层数据结构是二叉树。
共性方法
Void clear()
清空集合
移除此列表中的所有元素。
boolean contains(Object o)
判断元素是否存在
如果此列表中包含指定的元素,则返回 true
。
boolean isEmpty()
判断集合是否为空
如果此列表中没有元素,则返回 true
int size()
获取集合长度
返回此列表中的元素数。
boolean retainAll(Collection<?> c)
取交集
仅保留此 collection
中那些也包含在指定 collection
的元素(可选操作)。
如
al1. retainAll(al2); al1
中只会保留和
al2
中相同的元素
Iterator<E>iterator()
迭代器
返回在此 collection
的元素上进行迭代的迭代器。
Iterator it = al.iterator();
while(it.hasNext())
{
sop("next:"+it.next());
}