出现集合类的原因 面向对象语言对事物的体现都是以对象的形式,所以为了方便对多个对象的操作,就对对象进行存储,集合就是存储对象最常用的一个方式. 数组和集合都是容器有何不同? 数组虽也可存储对象,但长度是固定的,集合长度是可变的,数组中可以存储基本数据类型,集合只能存储对象. 特点:集合只用于存储对象,集合长度是可变的,集合可以存储不同类型的对象.

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()); }