当前位置:网站首页>The author of LinkedList said he didn't use LinkedList himself
The author of LinkedList said he didn't use LinkedList himself
2022-07-07 22:52:00 【Yes' level training strategy】
Hello everyone , I am a yes.
Surfing the Internet today , See an article saying LinkedList The author said he didn't have to LinkedList, I went to his twitter on purpose , Found that he did say that !

Maybe this is the big guy , I make wheels , But I don't ! Or this is the legendary cook who doesn't eat his own dishes ?
No more , Get down to business . In fact, I personally feel that what the boss said seems to be true , Because it doesn't seem to be used in business LinkedList , Most of the scenes use ArrayList More appropriate , I counted my daily usage , It's really all ArrayList .
Speaking of this , Someone may disagree , Said I had seen the face-to-face test questions ,LinkedList But it has its advantages !
I've also read this question , If I remember correctly, it should be : say something ArrayList and LinkedList Differences between ?
I think this question can be called “ The top three of the eight part essay ”, In fact, this problem is mapped to the comparison between arrays and linked lists .
As long as you read this interview question online , The answer you see must be :
- Random access to arrays is fast , Insertion and deletion are slow
- The insertion and deletion of linked list is fast , Random access is slow
- Frequent additions and deletions , It is more appropriate to use a linked list
- When there are many random searches , An array is more appropriate
The problem lies in the frequent addition and deletion of the linked list . If only from the perspective of increasing the time complexity of these three methods , Such is the case , No mistake. .
however , In normal use , This statement is completely untenable ! Do you think , If you want to delete an element from the linked list , You have to find it first ! The search of this linked list can be time-consuming !
So in practice , If you have frequent additions and deletions , Nor should we use linked lists .
Don't believe it ? Let's do an experiment to see .
public class YesArrayLinkedBattle {
private static final int COUNT = 100000;
static List<Integer> fillList(List<Integer> list) {
for (int i = 0; i < COUNT; i++) {
list.add(i); // take list fill , Pretend we get so much data in the database
}
return list;
}
static void randomAdd(List<Integer> list, String listType) {
long t1 = System.currentTimeMillis();
for (int i = 0; i < COUNT; i++) {
list.add(ThreadLocalRandom.current().nextInt(0,COUNT), i);
}
long t2 = System.currentTimeMillis();
System.out.println(listType +" Random position insertion " + COUNT + " Time consuming :" + (t2-t1));
}
public static void main(String[] args) {
randomAdd(fillList(new ArrayList<>(COUNT)), " Array ");
randomAdd(fillList(new LinkedList<>()), " Linked list ");
}
}
The experiment is rough and simple , But it's also intuitive , Separate the filled data ArrayList and LinkedList perform 10 Ten thousand random insertion operations , Then count the time consumption separately .
The results are as follows :

Is that so? , In the case of random insertion , The linked list is not dominant, but much weaker than the array !
So for the insertion of linked list , You can't just focus on the time complexity of its insertion , Also include the cost of finding the front node , therefore You can't Say arbitrarily : Frequent additions and deletions , It is more appropriate to use a linked list
Of course , If the amount of data is small , In fact, both are similar , For example, the length is 100 , perform 100 Time , The time consumption is as follows :

The length is 1000 , perform 1000 Time , The time consumption is as follows :
therefore , In the case of a small amount of data and a small number of operations, there is no need to worry too much about which one to use . However, when the amount of data is large and sensitive to time delay , It is suggested to do a good job in testing , Can not be based on some plain “ Online conclusion ” And come to a conclusion .
Okay , For the time being . Remember, don't go to the interview directly , We need to question more , Add some personal thinking , This will make people think you have something more .
I am a yes, From a little bit to a billion , See you next time .
边栏推荐
- GBU1510-ASEMI电源专用15A整流桥GBU1510
- Revit secondary development - intercept project error / warning pop-up
- 「开源摘星计划」Loki实现Harbor日志的高效管理
- Cannot find module 'xxx' or its corresponding type declaration
- Microservice Remote debug, nocalhost + rainbond microservice Development second Bomb
- 微服务远程Debug,Nocalhost + Rainbond微服务开发第二弹
- Debezium系列之: 支持在 KILL 命令中使用变量
- C development - interprocess communication - named pipeline
- Leetcode interview question 02.07 Linked list intersection [double pointer]
- IP network active evaluation system -- x-vision
猜你喜欢

Line test - graphic reasoning -7- different graphic classes

. Net automapper use

Robot autonomous exploration series papers environment code

Redis集群安装

Remember aximp once Use of exe tool

面试百问:如何测试App性能?

UWA问答精选

Yarn cannot view the historical task log of yarn after enabling ACL user authentication. Solution

Select sort (illustration +c code)

Digital transformation: five steps to promote enterprise progress
随机推荐
Select sort (illustration +c code)
LeetCode206. Reverse linked list [double pointer and recursion]
行测-图形推理-4-字母类
Xcode modifies the default background image of launchscreen and still displays the original image
7-18 simple simulation of banking business queue
0-5VAC转4-20mA交流电流隔离变送器/转换模块
C development - interprocess communication - named pipeline
LeetCode142. Circular linked list II [two pointers, two methods for judging links in the linked list and finding ring points]
Unity technical notes (II) basic functions of scriptableobject
Revit secondary development - wall opening
Unity local coordinates and world coordinates
php 获取图片信息的方法
How to choose the appropriate automated testing tools?
Basic knowledge of linked list
软件测评中心▏自动化测试有哪些基本流程和注意事项?
Amesim2016 and matlab2017b joint simulation environment construction
Cataloger integrates lidar and IMU for 2D mapping
Revit secondary development - shielding warning prompt window
Matplotlib快速入门
How to judge whether the input content is "number"