------- <a href="http://www.itheima.com" target="blank">android培训</a>、<a href="http://www.itheima.com" target="blank">java培训</a>、期待与您交流! ----------
集合
面向对象语言对事物的体现都是以对象的形式,所以为了方便对多个对象的操作,就要对对象进行存储,集合就是存储对象最常用的一种方式。
数组和集合的不同之处:
数组虽然也可以存储对象,但长度是固定的;可以存储任意数据类型。
集合长度是可变的。集合只能存储对象。
集合的特点:集合只用于存储对象,集合长度是可变的,集合可以存储不同类型的对象。
集合及其子集合:
Collection
List Set
ArrayList LinkedList Vector HashSet TreeSet
这里Collection是老大,具有子类所以的基本方法和功能,学习中,先掌握老大的方法后,再去学习List和Set会更加熟练,只需掌握他们的特有功能即可。同理,相对于他们,子类也只需掌握特有方法和功能。
Collection
|--List:元素是有序的,元素可以重复,因为该集合体系有索引。
|--ArrayList:底层的数据结构是数组结构。特点:元素的查询速度很快,但是增删稍慢。线程不同步。
|--LinkedList:底层的数据结构是链表数据结构。特点:查询速度慢,但是增删操作快速。
|--Vector :底层是数组数据结构。线程同步。被ArrayList替代了。
|--Set:元素是无序的(存入和取出的顺序不一定一致),元素不可以重复。
|--HashSet:底层数据结构是哈希表。 线程是非同步的
|--TreeSet:可以对Set集合中的元素进行排序。底层数据结构是二叉树
Collection中的常用方法:
添加功能(修改功能):
boolean add(Object o):该方法用于向集合里面添加一个元素,若集合对象被添加操作改变了,返回true.
boolean addAll(Collection c):把集合c里面的所有元素添加到指定集合里面去,如果集合对象被添加操作改变了返回true.
删除功能:
void clear():清除集合里面的所有元素,将集合长度变为0。
boolean remove(Object o):删除集合中指定元素o。
boolean removeAll(Collection c):从集合中删除集合c里面的元素。若删除一个或以上返回true。
判断功能:
boolean contains(Object o):返回集合里是否包含指定的元素。
boolean containsAll(Collection c):返回集合里是否包含集合c内所有的元素。
boolean isEmpty():返回集合是否为空(长度是否为0)。
获取功能:
Iterator iterator():返回一个Iterator对象,用于遍历集合里的元素。
boolean retainAll(Collection c):从集合中删除集合c里不包含的元素。
int size():得到集合元素的个数。
Object[] toArray():把集合转成一个数组,所有集合元素变成数组元素。
针对Collection集合我们到底使用谁呢?
唯一吗?
是:Set
排序吗?
是:TreeSet
否:HashSet
如果你知道是Set,但是不知道是哪个Set,就用HashSet。
否:List
要安全吗?
是:Vector
否:ArrayList或者LinkedList
查询多:ArrayList
增删多:LinkedList
如果你知道是List,但是不知道是哪个List,就用ArrayList。
如果你知道是Collection集合,但是不知道使用谁,就用ArrayList。
如果你知道用集合,就用ArrayList。
总结:
Collection集合遍历的时候,可以用itrator遍历器,因为这是集合的专用遍历器,而增强for数组和集合都能用,但是用增强for的时候,应该先判断遍历对象是否为null。