当前位置:网站首页>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 .
边栏推荐
- Line test - graphic reasoning - 3 - symmetric graphic class
- ASEMI整流桥KBPC1510的型号数字代表什么
- Understand the autograd package in pytorch
- Amesim2016 and matlab2017b joint simulation environment construction
- Basic knowledge of binary tree
- Loki, the "open source star picking program", realizes the efficient management of harbor logs
- Matplotlib quick start
- 行测-图形推理-5-一笔画类
- 0-5vac to 4-20mA AC current isolated transmitter / conversion module
- Cataloger integrates lidar and IMU for 2D mapping
猜你喜欢
0-5vac to 4-20mA AC current isolated transmitter / conversion module
UWA问答精选
“拧巴”的早教行业:万亿市场,难出巨头
Line test - graphic reasoning -7- different graphic classes
LeetCode142. Circular linked list II [two pointers, two methods for judging links in the linked list and finding ring points]
Apple further entered the financial sector through the 'virtual card' security function in IOS 16
Basic knowledge of linked list
Force deduction - question 561 - array splitting I - step by step parsing
LeetCode203. Remove linked list elements
ASP. Net core introduction V
随机推荐
Ren Qian code compilation error modification
Leetcode interview question 02.07 Linked list intersection [double pointer]
行测-图形推理-9-线条问题类
Time convolution Network + soft threshold + attention mechanism to realize residual life prediction of mechanical equipment
Line test graph reasoning graph group class
Revit secondary development - modify wall thickness
Line test - graphic reasoning - 3 - symmetric graphic class
行测-图形推理-4-字母类
0-5VAC转4-20mA交流电流隔离变送器/转换模块
「开源摘星计划」Loki实现Harbor日志的高效管理
Visual studio 2019 installation
How to close eslint related rules
LeetCode144. Preorder traversal of binary tree
Cataloger integrates lidar and IMU for 2D mapping
Line measurement - graphic reasoning -9- line problem class
Remember an experience of using selectmany
Leetcode1984. Minimum difference in student scores
LeetCode142. Circular linked list II [two pointers, two methods for judging links in the linked list and finding ring points]
UWA问答精选
VTOL in Px4_ att_ Control source code analysis [supplement]