ArrayList和LinkedList的增删改查效率的区别?
Arraylist的底层是动态数组,增加是通过一个一个遍历后为null这才会增加,删除是通过后一个覆盖前面要删除的那一下标的方式,一直持续到最后才行,这样就十分的浪费时间。所以ArrayList适合做改,查的工作。
LinkedList的底层是双向链表的结构,看LinkedList的双向链表结构导致查询修改比较慢,但是新增和删除的话效率是比较高的,因为只涉及到指向节点的指针的改变,找到相应的节点之后进行替换设置好指针的前后指向地址,不需要像ArrayList那样需要对数组位置的变动。所有LinkedList适合增,删的工作。
为什么说链表结构的LinkedList是相对有序存储的?
举一个场景来说明上面的有序核心实现方法,比如说有这么一个场景: 一个班有 1号小明同学 2号张三 3号小红 4号李四同学,老师要知道学生进入教师的先后顺序。老师在黑板上写了 两个词 head,tail两个字段 规定:
1.第一个来的在 head来的在head、tail写上自己的名字
2.第二个及后续到的, 看到黑板上的tail字段后,找到这个同学(这个同学记住我之后到的 after) 通知自己到了(并记住在我之前的是这个同学before) 并修改tail字段为自己的名字
例子:
1.小明同学 第一个到 ,在黑板上 head,tail 都写下 小明
2.张三到了之后看到 tail是小明 记住 自己上一个(before)是小明 ,并修改tail为张三 ,通知小明,小明记下来自己的后面(afte)r是张三
3小红到了看到tail是张三 记住自己上一个(before)是张三 并修改tail为小红,通知张三,张三记下来自己的后面(after)是小红
4李四到了。。。。。。。
老师来了上课 看到head上写的是小明 并询问 小明 你后面是谁 , 小明回:小红 再询问 小红 …知道 询问到李四 结束
老师就知道了学生进入教室的顺序 小明->张三->小红->李四。
- JAVA中ArrayList与LinkedList的区别以及对应List使用foreach与使用下标遍历的效率问题
- ArrayList和LinkedList都是实现了List接口的类,他们都是元素的容器,用于存放对象的引用; 他们都可以对存放的元素进行增删改查的操作,还可以进行排序。 但是,他们还是有区别的。
- HashMap存取效率高原因、ArrayList和LinkedList区别、JAVA实现链表的基本功能
- 关于LinkedList和ArrayList的执行效率的问题的区别(测试用例)
- JAVA中ArrayList与LinkedList的区别以及对应List使用foreach与使用下标遍历的效率问题
- ArrayList与LinkedList底层实现与增删查效率比较
- LinkedList和ArrayList的区别
- ArrayList和LinkedList的区别
- ArrayList与LinkedList、HashTable与HashMap区别
- Java中ArrayList和LinkedList区别
- ArrayList、LinkedList、Vector的区别
- 源码浅析 ArrayList、Vector、LinkedList 的区别
- ArrayList 和 LinkedList 区别
- ArrayList Vector LinkedList 区别与用法
- java集合框架05——ArrayList和LinkedList的区别
- ArrayList、LinkedList和Vector 的区别
- ArrayList和LinkedList的区别
- 理解ArrayList与LinkedList的区别
- arraylist和linkedlist的区别
- ArrayList与LinkedList的区别