社区
Web 开发
帖子详情
请教ArrayList和LinkedList的区别!
sky_knight
2003-09-26 10:32:08
请问ArrayList和LinkedList中哪个可以从中间删除元素,我试了一下他们的remove(i)方法,好像都只能从尾部一个元素,i根本不起作用啊,是怎么回事?谢谢
...全文
235
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
的
区别
?我征服了他。
Java -
Array
List
和
Link
ed
List
的
区别
如果列表很大很大,
Array
List
和
Link
ed
List
在内存的使用上也有所不同。
Link
ed
List
的每个元素都有更多开销,因为要存储上一个和下一个元素的地址。
Array
List
没有这样的开销。但是,
Array
List
占用的内存在声明的时候就已经确定了(默认大小为 10),不管实际上是否添加了元素,因为复杂对象的数组会通过 null 来填充。
Link
ed
List
在声明的时候不需要指定大小,元素增加或者删除时大小随之改变。另外,
Array
List
只能用作列表;
java中
Link
ed
List
和
Array
List
的
区别
Array
List
和
Link
ed
List
是
List
接口的两种不同实现,并且两者都不是线程安全的。但初学者往往搞不清楚它们两者之间的
区别
,不知道什么时候该用
Array
List
,什么时候该用
Link
ed
List
,那这篇文章就来传道受业解惑一下。
Array
List
内部使用的动态数组来存储元素,
Link
ed
List
内部使用的双向链表来存储元素,这也是
Array
List
和
Link
ed
List
最本质的
区别
。 注:本文使用的 JDK 源码版本为 14,小伙伴如果发现文章中的源码和自己本地的不同
【面试题】说一下
Array
List
和
Link
ed
List
的
区别
?
Array
List
内部使用动态数组来存储元素,
Link
ed
List
内部使用的双向链表来存储元素,这也是
Array
List
和
Link
ed
List
最本质的
区别
。
无情!毫不犹豫地揭开了
Array
List
和
Link
ed
List
之间的神秘面纱
Array
List
和
Link
ed
List
是
List
接口的两种不同实现,并且两者都不是线程安全的。但初学者往往搞不清楚它们两者之间的
区别
,不知道什么时候该用
Array
List
,什么时候该用
Link
ed
List
,那这篇文章就来传道受业解惑一下。
Array
List
内部使用的动态数组来存储元素,
Link
ed
List
内部使用的双向链表来存储元素,这也是
Array
List
和
Link
ed
List
最本质的
区别
。 注:本文使用的 JDK 源码版本为 14,小伙伴如果发现文章中的源码和自己本
Web 开发
81,094
社区成员
341,711
社区内容
发帖
与我相关
我的任务
Web 开发
Java Web 开发
复制链接
扫一扫
分享
社区描述
Java Web 开发
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章