社区
Web 开发
帖子详情
请教ArrayList和LinkedList的区别!
sky_knight
2003-09-26 10:32:08
请问ArrayList和LinkedList中哪个可以从中间删除元素,我试了一下他们的remove(i)方法,好像都只能从尾部一个元素,i根本不起作用啊,是怎么回事?谢谢
...全文
281
5
打赏
收藏
请教ArrayList和LinkedList的区别!
请问ArrayList和LinkedList中哪个可以从中间删除元素,我试了一下他们的remove(i)方法,好像都只能从尾部一个元素,i根本不起作用啊,是怎么回事?谢谢
复制链接
扫一扫
分享
举报
写回复
配置赞助广告
用AI写文章
5 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
sky_knight
2003-09-26
打赏
举报
回复
以你这么说,就是ArrayList是可以实现从中间删除一个元素的?可是在我的一个程序功能中,有两个JSP页面,第一个页面中生成一个STATIC的静态ArrayList对象,然后到第二个页面进行删除LIST中的某个元素的操作,例如:我原来LIST中有object0,object1,object2,object3共4个元素,我在第二个页面执行LIST.remove(1);然后把他们打印出来,结果是:object0,object2,object3,这是正确的,然后再返回到第一个页面等待其它操作,可是发现在第一个页面里显示出来的LIST中的内容却是:object0,object1,object2了,把最后一个object3删除了,而object1却还在,太郁闷了!到底要怎么用呢?
ioriwellings
2003-09-26
打赏
举报
回复
ArrayList是List接口的一个可变长数组实现。实现了所有List接口的操作,并允许存储null值。除了没有进行同步,ArrayList基本等同于Vector。在Vector中几乎对所有的方法都进行了同步,但ArrayList仅对writeObject和readObject进行了同步,其它比如add(Object)、remove(int)等都没有同步。
看看它的remove 源:
public Object remove(int index)
{
RangeCheck(index);
modCount++;
Object oldValue = elementData[index];
int numMoved = size - index - 1;
if (numMoved > 0) System.arraycopy(elementData, index+1, elementData, index, numMoved);
elementData[--size] = null; // Let gc do its work return oldValue;
}
RangeCheck()的作用是进行边界检查。由于ArrayList采用一个对象数组存储元素,所以在删除一个元素时需要把后面的元素前移。删除一个元素时只是把该元素在elementData数组中的引用置为null,具体的对象的销毁由垃圾收集器负责。
这个就可以实现 删除 指定位置的元素。
sky_knight
2003-09-26
打赏
举报
回复
谢谢各位了,很不好意思,是我自己的程序出了个小bug
ji66
2003-09-26
打赏
举报
回复
Linkedlist 可以在链表头尾增加、删除、插入元素
youfly
2003-09-26
打赏
举报
回复
ArrayList的实现采用了动态数组,因此它的插入或者删除的效率会变得不好,但有很好的数据遍历性能。linkedList用的是链表的技术,因些它对于插放或者删除操作的效率很高,对于查询的效率却是不好。
Array
List
和
Link
ed
List
的
区别
看这一篇就够了!
用一句话总结
Array
List
和
Link
ed
List
的
区别
是:
Array
List
底层是数组,查询快、增删慢;
Link
ed
List
底层是链表,查询慢、增删快。 但是,任何技术的好坏都是要看场景的...而且,
Link
ed
List
增删真的快吗? 关于
Array
List
和
Link
ed
List
的
区别
,个人认为要结合底层数据结构来看查询和增删两个操作带来的影响。 查询比较
Array
List
底层是数组,数组的存储空间是连续的,可以根据寻址方式直接找到对应的元素位置,时间复杂度是O(1)。 举个例子:在一条.
深入有趣的理解
Array
list
与
Link
ed
list
以及关于Vector的
区别
!
一、首先是
Array
List
和
Link
ed
List
的大致
区别
如下:1.
Array
List
是实现了基于动态数组的数据结构,
Link
ed
List
基于链表的数据结构。 2.对于随机访问get和set,
Array
List
觉得优于
Link
ed
List
,因为
Link
ed
List
要移动指针。 3.对于新增和删除操作add和remove,Lin
ed
List
比较占优势,因为
Array
List
要移动数据。二、Arra...
面试必问!
Array
List
和
Link
ed
List
究竟有什么
区别
?
Array
List
和
Link
ed
List
的
区别
1)继承的类和接口不同
Array
List
继承的是Abstract
List
<E>类,实现的是RandomAccess接口。
Link
ed
List
继承的是AbstractSequential
List
<E>类,实现的是Deque<E>接口。 这里讲一下RandomAccess接口和Deque<E>接口: RandomAccess: 简单来说,RandomAccess类似与一个标记性的接口,不提供任何功能
Array
List
和
Link
ed
List
的
区别
!~
Array
List
是用数组的方式存储的,做查询时效率很高,但做添加和删除的时候(除在它的后面加)当数据量大时(>20万)时效率明显不如
Link
ed
List
; 当在数组中间插入数据时它的后面对应的数据都得向后移动,浪费大量时间。
Link
ed
List
是用链表的方式存储。 链表是一种物理存储单元上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。链表由一系列结点(链表...
Array
List
和
Link
ed
List
的
区别
Array
List
和
Link
ed
List
的
区别
Array
List
基于动态数组实现的非线程安全的集合;
Link
ed
List
基于链表实现的非线程安全的集合。 对于随机index访问的get和set方法,一般
Array
List
的速度要优于
Link
ed
List
。因为
Array
List
直接通过数组下标直接找到元素;
Link
ed
List
要移动指针遍历每个元素直到找到为止。 新增和删除元素,一...
Web 开发
81,108
社区成员
341,721
社区内容
发帖
与我相关
我的任务
Web 开发
Java Web 开发
复制链接
扫一扫
分享
社区描述
Java Web 开发
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章