黑马程序员技术交流社区

标题: LinkList、ArrayList等的区别,附C语言双向链表的实现 [打印本页]

作者: du_minchao    时间: 2015-10-8 08:41
标题: LinkList、ArrayList等的区别,附C语言双向链表的实现
List的框架图
    List
     |---- LinkList
     |---- ArrayList
     |---- Vector
     |---- Stack
   
List是一个接口,它继承于Collection的接口。它代表着有序的队列。
ArrayList,LinkedList, Vector, Stack是List的4个实现类。
ArrayList:一个数组队列,相当于动态数组。它由数组实现,随机访问效率高,随机插入、删除效率低。
LinkedList:一个双向链表。它也可以被当作堆栈、队列或双端队列进行操作。随机访问效率低,但随机插入、随机删除效率低。
Vector:矢量队列,和ArrayList一样,它也是一个动态数组。但是ArrayList是非线程安全的,而Vector是线程安全的。
Stack:它继承于Vector。它的特性是:先进后出(FILO, FirstIn Last Out)。
List使用场景
如果涉及到“栈”、“队列”、“链表”等操作,应该考虑用List,具体的选择哪个List,根据下面的标准来取舍。
1、对于需要快速插入,删除元素,应该使用LinkedList。
2、对于需要快速随机访问元素,应该使用ArrayList。
3、对List仅仅只会被一个线程操作时应该使用非同步类(如ArrayList)。
4、对List可能同时被多个线程操作时应该使用同步类(如Vector)。
附件是我11年学严蔚敏数据结构时实现的LinkList(单向链表),和双向链表的实现原理相同。


LinkList.rar

13.47 KB, 下载次数: 374


作者: du_minchao    时间: 2015-10-8 09:30
人呢, 每人来吗?{:2_30:}
作者: 斯文阿昊    时间: 2015-10-8 21:43
我想说我们头像一样......




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2