数据结构之数组和链表的区别和List的三个子类的特点


数据结构之数组和链表

 A:数组
	* 查询快修改也快
	* 增删慢
 B:链表
	* 查询慢,修改也慢
	* 增删快
区别 转自http://www.cnblogs.com/pre_con/archive/2009/05/27/1490745.html
1)数组在内存中是逐个存放的,也就是说倘若数组的第一个元素在地址A,则数组第二个元素就在地址A+1。
而链表则不是,链表每个节点没有相对固定的位置关系。某个节点在地址A其后的节点不一定是A+1,而在内存的其他空闲区域,呈现一种随机的状态。
2)数组一旦显式的被申明后,其大小就固定了,不能动态进行扩充。而链表则可以,可以动态生成节点并且添加到已有的链表后面。
3)链表灵活,但是空间和时间额外耗费较大;数组大小固定,元素位置固定,但是操作不灵活,且容易浪费空间,但是时间耗费较小,
尤其是元素变化不大的时候效率很高。双向链表比单向的更灵活,但是空间耗费也更大
。。。。。
链表的特性是在中间任意位置添加删除元素的都非常的快,不需要移动其它的元素。 
链表顾名思义,要把各个元素链接起来才算撒。   
  	通常链表每一个元素都要保存一个指向下一个元素的指针(单链表)。   
  	双链表的化每个元素即要保存到下一个元素的指针,还要保存一个上一个元素的指针。   
  	循环链表则把最后一个元素中保存下一个元素指针指向第一个元素。   
数组是一组具有相同类型和名称的变量的集合。这些变量称为数组的元素,每个数组元素都有一个编号,
这个编号叫做下标,我们可以通过下标来区别这些元素。数组元素的个数有时也称之为数组的长度。 
从内存存储角度来看
     a,(静态)数组从栈中分配空间, 对于程序员方便快速,但自由度小。
     b, 链表从堆中分配空间, 自由度大但申请管理比较麻烦.


List的三个子类的特点

		ArrayList:
			底层数据结构是数组,查询快,增删慢。
			线程不安全,效率高。
		Vector:
			底层数据结构是数组,查询快,增删慢。
			线程安全,效率低。
		Vector相对ArrayList查询慢(线程安全的)
		Vector相对LinkedList增删慢(数组结构)
		LinkedList:
			底层数据结构是链表,查询慢,增删快。
			线程不安全,效率高。
			底层数据结构是数组,查询快,增删慢。
			线程不安全,效率高。

Vector和ArrayList的区别

Vector是线程安全的,效率低
ArrayList是线程不安全的,效率高
	共同点:都是数组实现的

ArrayList和LinkedList的区别

ArrayList底层是数组结果,查询和修改快
LinkedList底层是链表结构的,增和删比较快,查询和修改比较慢
		共同点:都是线程不安全的


List有三个儿子,我们到底使用谁呢?
		查询多用ArrayList
		增删多用LinkedList
		如果都多ArrayList


  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值