在线等(新手试问)

syj247 2010-04-08 10:24:08
AarryList LinkedList 和 vector之间的区别和联系
谢谢了


...全文
170 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
tonytone2008 2010-04-08
  • 打赏
  • 举报
回复
恩,大家都总结得不错,我觉得主要看用法,经常增加,删除用LinkedList,经常修改,查询用ArrayList,通常不用Vector
davis_rly 2010-04-08
  • 打赏
  • 举报
回复
ArrayList实现了RandomAccess接口,所以支持随机访问,LinkedList本质上是双向链表
这两者都实现了List接口,看名字就可以看得出来
Vector是线程安全的数据结构,但是基本不用了,很早以前的东东了,我自己学的时候就不去怎么了解这个的
syj247 2010-04-08
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 bibihenmuc 的回复:]
AarryList 底层用数组实现,增删慢查询快
LinkedList 用链表实现,增删快查询慢
vector 是早期版本的东西,现在基本不使用
[/Quote]
看你应该和我是同一个人教的 (猛哥?)
syj247 2010-04-08
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 liuxiaolei7676 的回复:]
|--List:它对元素的存取是有顺序的。可以存入重复元素,因为该集合中的元素都有角标。
|--ArrayList:底层是数组数据结构。不同步的。对于随机访问get和set,ArrayList觉得优于LinkedList,因为LinkedList要移动指针。
|--Vector:底层是数组数据结构。同步的。效率非常低。支持枚举。但枚举已被迭代器所取代。
|--LinkedList……
[/Quote]

很清晰 ·谢谢了
liuxiaolei7676 2010-04-08
  • 打赏
  • 举报
回复
|--List:它对元素的存取是有顺序的。可以存入重复元素,因为该集合中的元素都有角标。
|--ArrayList:底层是数组数据结构。不同步的。对于随机访问get和set,ArrayList觉得优于LinkedList,因为LinkedList要移动指针。
|--Vector:底层是数组数据结构。同步的。效率非常低。支持枚举。但枚举已被迭代器所取代。
|--LinkedList:底层是链表数据结构的。对于新增和删除操作add和remove,LinedList比较占优势,因为ArrayList要移动数据。

(如果集合中的元素的数目大于目前集合数组的长度时,vector增长率为目前数组长度的100%,而arraylist增长率为目前数组长度的50%,ArrayList比较节省内存空间。)

ArrayList、LinkedList和Vector都可以使用自身的get()方法跟迭代器进行集合元素遍历,Vector还可使用枚举进行遍历,实现的功能跟迭代器是相同的,但迭代器接口中添加了一个可选的移除操作,并使用较短的方法名。新的实现应该优先考虑使用 Iterator 接口而不是 Enumeration 接口。



本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/liuxiaolei7676/archive/2010/04/07/5459768.aspx
bibihenmuc 2010-04-08
  • 打赏
  • 举报
回复
AarryList 底层用数组实现,增删慢查询快
LinkedList 用链表实现,增删快查询慢
vector 是早期版本的东西,现在基本不使用
  • 打赏
  • 举报
回复
google or baidu
铑枪--突廆孒 2010-04-08
  • 打赏
  • 举报
回复
去网上搜索一下,多得很。。。


LinkedList类
  LinkedList实现了List接口,允许null元素。此外LinkedList提供额外的get,remove,insert方法在LinkedList的首部或尾部。这些操作使LinkedList可被用作堆栈(stack),队列(queue)或双向队列(deque)。
  注意LinkedList没有同步方法。如果多个线程同时访问一个List,则必须自己实现访问同步。一种解决方法是在创建List时构造一个同步的List:
    List list = Collections.synchronizedList(new LinkedList(...));

ArrayList类
  ArrayList实现了可变大小的数组。它允许所有元素,包括null。ArrayList没有同步。
size,isEmpty,get,set方法运行时间为常数。但是add方法开销为分摊的常数,添加n个元素需要O(n)的时间。其他的方法运行时间为线性。
  每个ArrayList实例都有一个容量(Capacity),即用于存储元素的数组的大小。这个容量可随着不断添加新元素而自动增加,但是增长算法并没有定义。当需要插入大量元素时,在插入前可以调用ensureCapacity方法来增加ArrayList的容量以提高插入效率。
  和LinkedList一样,ArrayList也是非同步的(unsynchronized)。

Vector类
  Vector非常类似ArrayList,但是Vector是同步的。由Vector创建的Iterator,虽然和ArrayList创建的Iterator是同一接口,但是,因为Vector是同步的,当一个Iterator被创建而且正在被使用,另一个线程改变了Vector的状态(例如,添加或删除了一些元素),这时调用Iterator的方法时将抛出ConcurrentModificationException,因此必须捕获该异常。
内容概要:本文档为一份《计算机程序设计语言(C++)》课程的实验报告,涵盖了从基础语法到面向对象编程的多个实验内容。实验内容包括基础语法练习(如银行存款计算、数值比较、科学计算)、控制结构(分支与循环,如闰年判断、素数判定、Kaprekar黑洞数)、数组操作(一维与二维数组的排序、查找、极值计算、杨辉三角)、函数定义与应用(递归、参数传递、函数重载)以及面向对象编程(类与对象的设计、继承、多态性、文件操作)。文档详细展示了每个实验的任务描述、具体C++代码实现、测试结果及实验分析,体现了从简单到复杂、逐步深入的学习路径。; 适合人群:具备C++基础语法知识,正在学习或巩固程序设计课程的在校大学生及初级编程学习者。; 使用场景及目标:①作为C++课程的配套实验指导材料,帮助学生通过实践掌握编程基础知识和核心算法;②用于自学练习,提升对循环、数组、函数和面向对象等核心概念的理解与编码能力。; 阅读建议:学习者应结合文档中的代码实例,动手在编程环境中逐一实现并调试,重点关注代码逻辑、边界条件处理和算法效率,通过对比预期输出与实际输出加深对知识点的掌握。

62,622

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧