集合的最大缺点是没法进行类型断定(这个缺点在JAVA1.5中已经解决),这样就可能出现由于类型不一样而出现类型错误。数组
解决的方法是添加类型的判断。 数据结构
LinkedList接口(在代码的使用过程当中和ArrayList没有什么区别)指针
ArrayList底层是object数组,因此ArrayList具备数组的查询速度快的优势以及增删速度慢的缺点。接口
而在LinkedList的底层是一种双向循环链表。在此链表上每个数据节点都由三部分组成:前指针(指向前面的节点的位置),数据,后指针(指向后面的节点的位置)。最后一个节点的后指针指向第一个节点的前指针,造成一个循环。队列
双向循环链表的查询效率低可是增删效率高。因此LinkedList具备查询效率低但增删效率高的特色。效率
ArrayList和LinkedList在用法上没有区别,可是在功能上仍是有区别的。object
LinkedList常常用在增删操做较多而查询操做不多的状况下:队列和堆栈。List
队列:先进先出的数据结构。循环
堆栈:后进先出的数据结构。方法
注意:使用堆栈的时候必定不能提供方法让不是最后一个元素的元素得到出栈的机会。