LinkedList vs ArrayList in Java Tutorial - Which Should You Use?

Complete Java course: codingwithjohn.thinkific.com/...
Updated answer: Although the complexity analysis in this video still stands, in real world applications, ArrayList is the better choice for virtually every single use case. See the pinned comment below for more info.
LinkedLists are a great data structure to be familiar with, but they can be confusing. If you're familiar with ArrayLists in Java and how to use them, then LinkedLists can be used in the same way.
But when should you use a LinkedList vs. an ArrayList? How do you use them - are there any differences. We'll go over all of that and more in this beginner/intermediate Java video tutorial lesson.
Learn or improve your Java by watching it being coded live!
Hi, I'm John! I'm a Lead Java Software Engineer and I've been in the programming industry for more than a decade. I love sharing what I've learned over the years in a way that's understandable for all levels of Java learners.
Let me know what else you'd like to see!
Links to any stuff in this description are affiliate links, so if you buy a product through those links I may earn a small commission.
📕 THE best book to learn Java, Effective Java by Joshua Bloch
amzn.to/36AfdUu
📕 One of my favorite programming books, Clean Code by Robert Martin
amzn.to/3GTPVhf
🎧 Or get the audio version of Clean Code for FREE here with an Audible free trial
www.audibletrial.com/johnclean...
🖥️Standing desk brand I use for recording (get a code for $30 off through this link!)
bit.ly/3QPNGko
📹Phone I use for recording:
amzn.to/3HepYJu
🎙️Microphone I use (classy, I know):
amzn.to/3AYGdbz
Donate with PayPal (Thank you so much!)
www.paypal.com/donate/?hosted...
☕Complete Java course:
codingwithjohn.thinkific.com/...
codingwithjohn.com

Пікірлер: 342

  • @prototype0277
    @prototype02772 жыл бұрын

    I've been working with Java for nearly 15 years now. I remember studying linked list in and various other data structures in college. John, you explained something that college professors flunked folks over so much better and in a matter of minutes rather than days. Bravo sir.

  • @findlestick
    @findlestick2 жыл бұрын

    Your channel is the only one that has increased my enthusiasm for Java, tenfold. Your videos really are a breath of fresh air here on KZread. I’m going to watch all your vids and thumb-them-up in gratitude. 👍

  • @CodingWithJohn

    @CodingWithJohn

    2 жыл бұрын

    Awesome, I'm really glad I could inspire that kind of interest!

  • @usernameusernameusername9835

    @usernameusernameusername9835

    Жыл бұрын

    I love your videos!

  • @MarkSmith-vo1vn

    @MarkSmith-vo1vn

    Жыл бұрын

    @@CodingWithJohn Could you do a Hashset video by chance.

  • @CodingWithJohn

    @CodingWithJohn

    Жыл бұрын

    Great idea! I'm actually planning that for my very next video.

  • @pequetreques

    @pequetreques

    Жыл бұрын

    I was about to post this: "Many tutorials here on KZread, and on Udemy, etc. But this is the very first time I feel utterly comfortable with one of them, because you go straight to the point in a very clear way, avoiding extra explanations. Thanks for your time/work!". But @findlestick already put a good one, so mine replying his. Thanks again John, you definitely rule this thing. ❤

  • @jam-yh9il
    @jam-yh9il2 жыл бұрын

    I don't know how your videos can be so condensed but still thorough. Thanks from all of the Computer Science majors.

  • @DassVeryGood
    @DassVeryGood Жыл бұрын

    Crazy how someone can explain all this clearly and simply in 10 minutes. Where my uni would take 2 mins of explaining nothing with a minimalistic slide showing what a linked list looks like. Thank you so much

  • @alexanderrizzi8003
    @alexanderrizzi80032 жыл бұрын

    This is *by far* the easiest video to help understand this concept. As a relatively new programmer, I always found it somewhat puzzling to have different implementations of the List interface, but this video clears so many things up and gives actual reasons for their existence! Cheers!

  • @gabenixon6141
    @gabenixon6141 Жыл бұрын

    July 14, 2022 - Properly learned ArrayList and LinkedList. Thanks John!

  • @Daniel95221
    @Daniel952212 жыл бұрын

    This is like my operating systems course but condensed in the best way. Thanks for the videos! ❤️

  • @goerekt
    @goerekt Жыл бұрын

    I once had a job to improve performance of a java application. Best improvement was done by just exchange a LinkedList to an ArrayList, because it was used to read a lot by index. Very simple change, but massive impact.

  • @lootster
    @lootster9 ай бұрын

    I have problems understanding LinkedList despite reading numerous articles online. Your video is a god's gift!

  • @wickedsnuk3812
    @wickedsnuk38122 жыл бұрын

    It was like those lectures where the instructor teaches so smoothly so s/he puts everything in your mind without you noticing.

  • @nerminkarapandzic5176
    @nerminkarapandzic51762 жыл бұрын

    I just found your channel, this is the second video I'm watching and it has already become my new favorite channel. Good work, keep it up :)

  • @Lyosha.
    @Lyosha.2 жыл бұрын

    The arrayList does not leave a "space" for the new element in the new array. It instead duplicates all the values from the index into which you want to move the new element into . Those duplicates are positioned one index down from that point (you get one doubled item ) and then that doubled item is replaced with the new one you are moving so the process it's actually longer than what you explained :)

  • @bekbolots9634
    @bekbolots9634 Жыл бұрын

    How can a man be so precise with his teaching! Great job.

  • @briangitego
    @briangitego2 жыл бұрын

    These are the best Java tutorials that I've found on KZread and believe me I've looked. Thanks a lot really!!

  • @l19870922
    @l198709222 жыл бұрын

    Hi John. Thank you for your wonderful clarification. This is by far the most clear tutorial I have ever watched to understand the difference LinkedList vs ArrayList and you explained it in a perfect way so that I could easily understand it without even re-watch the video.

  • @alicewu6674
    @alicewu66742 жыл бұрын

    this is the only video that really makes me understand what an arraylist and linkedlist is, thank you!

  • @paulaa5210
    @paulaa521027 күн бұрын

    Thank you so much for all these videos! I've been watching them this semester and they have helped tremendously

  • @muradalnajjar6533
    @muradalnajjar6533 Жыл бұрын

    Thank you very much, John! Your way of explaining java concepts is very straightforward to understand. Your videos are worth every second to watch.

  • @YushinWE
    @YushinWE6 ай бұрын

    Wow. What an easy-to-understand yet well-informed video. This is much better than my professor's two-hour lecture on this subject. This is exactly what I want to watch for learning anything!

  • @ayushgupta8239
    @ayushgupta82392 жыл бұрын

    Wish i had someone to teach me these stuff earlier…I had to learn these things the hard way. Awesome video man!! Just one thing I think array list uses a load factor of (0.75) to decide when to scale up not when the list is totally full(e.g. like reached 10)

  • @MrCosmonaut
    @MrCosmonaut2 жыл бұрын

    I'm glad youtube suggested me your channel John. Your videos are truly inspiring, and quite useful for a beginner like me. I want to declare my appreciation for the work you're doing here =) Thank you!

  • @SpooxyCowboy1911
    @SpooxyCowboy1911 Жыл бұрын

    It’s so refreshing to hear an explanation that doesn’t have a heavy accent. Almost all my professors are hard to understand and it makes it difficult to learn

  • @denniskim4326
    @denniskim43265 ай бұрын

    Thank you for your videos. Trying to learn Java on the job and your tutorials are quite literally saving me at every turn.

  • @jerryg2757
    @jerryg27572 жыл бұрын

    You’re great man. Love your enthusiasm for Java. Keep it up!

  • @ginandi1
    @ginandi12 жыл бұрын

    In most use cases, amortized analysis shows equivalence of run time. Linked lists, however, lead to more cache misses (array can be bulk copied to cache with much fewer misses) which puts array in a huge advantage for practical reasons as well.

  • @aco7992
    @aco79922 жыл бұрын

    Thanks for clear explanations. I exactly found out what I am looking for.

  • @neilbeltran9406
    @neilbeltran94064 күн бұрын

    Im new to Java and started self-studying. This is so easy to understand thank you

  • @globalskills2861
    @globalskills28612 жыл бұрын

    Hey John i am from morroco nord of Africa i am beginer in Java i just want to Say you are doing a great work your vidéos helps a lot .

  • @prathapvideo
    @prathapvideo2 жыл бұрын

    Hey John. I was cording for past 10 years. Never ever thought about it. You are an eye opener. Wonderful explanation. Thank youuuuuu veryyyyyyy muchhhhh😄😄😄😄😄👍👍👍👍👍

  • @markbozinovic706
    @markbozinovic7062 жыл бұрын

    Thanks John, good starting point for Java Coders in the intermediate stages looking to go advanced and being Java is applicable with mobile apps. Have posted on my twitter, Regards and keep these videos going. Mark

  • @slaki1706
    @slaki17062 жыл бұрын

    Amazingly clear video, great job. Just a minor remark: To emphasize that the interface of the two lists is the same you could have used just List as their type. Generally, that is the recommended way anyway.

  • @franfonse
    @franfonse2 жыл бұрын

    John. I'm computer engineer student, and your videos are just brilliant. Thank you so much for so, so good content. Keep it up! I will support this channel the best way I can :-)

  • @omarnoor4249
    @omarnoor42492 жыл бұрын

    Thanks for your tutorial they are helping me a lot in my Java studies. You are a genius.

  • @amirulidzham
    @amirulidzham2 жыл бұрын

    I learn java since 2014 but now I understand it. Huge thanks

  • @davishilton4754
    @davishilton4754 Жыл бұрын

    You explain things so clearly, keep up the good work and Thanks!!!

  • @Hugos68
    @Hugos682 жыл бұрын

    Thank you for the comprehensive video with plenty of examples and thorough explanation!

  • @onkarjadhav4186
    @onkarjadhav41862 жыл бұрын

    I have watched lots of video for understanding ArrayList and LinkedList difference but this video fix my all doubts.

  • @antonsilta7248
    @antonsilta72482 жыл бұрын

    Thanks a lot, barely could be clearer! Interesting as hell, can't stop watching :)

  • @marionthenault8670
    @marionthenault86707 ай бұрын

    This is so clear and so helpful, thank you

  • @jeeperscreepers7
    @jeeperscreepers72 жыл бұрын

    Love your videos! been watching all of them to get prepared for my next job interview :P

  • @erezswickley2139
    @erezswickley2139 Жыл бұрын

    Finally, a clear explanation, Thank you! You definitely earned my subscription.

  • @aldotube88
    @aldotube8811 ай бұрын

    First time watching your videos, very good explanation at helping me understand this!

  • @newaccaunt6648
    @newaccaunt6648 Жыл бұрын

    Thank you very much. Quality of the lesson is really good. You are professional. Keep it doing! 👍👍👍

  • @JbizzyLoL
    @JbizzyLoL6 ай бұрын

    Just want to show appreciation for these videos. You're saving me from drowning in my programming & methodologies II course!!

  • @Hackers16
    @Hackers162 жыл бұрын

    thank you so much for this tutorial. now I know what is really the difference between them. I hope you’ll grow your channel more. Please make a tutorial for Data Structures in Java as well. That would be really helpful

  • @noteuser15
    @noteuser15 Жыл бұрын

    Bro, you are helping me a lot! I am falling way behind in my Java class, and my teacher is not helping me. Your videos are a boon! thanks

  • @asherkhan2656
    @asherkhan265610 ай бұрын

    Great explanation and good review for me…thank you

  • @emiliasavin6484
    @emiliasavin64842 жыл бұрын

    Love your videos, short and informative 👍

  • @fc6827
    @fc68278 ай бұрын

    Good video, never really thought about this, and have been doing this for 7 years now

  • @IbytheGOAT
    @IbytheGOAT10 ай бұрын

    I make sure to search your name for any Java concept I gotta learn, you explain things perfectly

  • @igorlamoia1540
    @igorlamoia15402 жыл бұрын

    Dude, I love your channel, I hated Java a time ago but I've been working with php (some POO) and I've been opening my mind to Java too, I had to do a Project using Java to my College last month, and you helped me so much with your videos. Now I'm watching every video just because I started to Love it. Thanks Bro! Ps: I'm from Brasil, and my english isn't that good.

  • @HarshSharma-pk6co
    @HarshSharma-pk6co Жыл бұрын

    Thank you so much for explanation, i am us array list most of time. But i had read it multiple time but didn't understood it well. But in your end of the video when you gave example that made me understood. Now i know which to use when

  • @Leandro-zo4kp
    @Leandro-zo4kp2 жыл бұрын

    Thank you very much for the content!! Your teaching is great!! Gratitude

  • @will_smith_0073
    @will_smith_00732 жыл бұрын

    You make very understandable videos, keep it up!

  • @bambangariyanto2306
    @bambangariyanto23062 жыл бұрын

    i love Java, so sad some programmers are leaving it.. but i am glad, someone like you learn a java.

  • @darthnihiluz5305
    @darthnihiluz53052 жыл бұрын

    As of late I've been getting into Java functional/lambda/reactive programming. Definitely took a little bit to get use to, maybe do a series on it?

  • @joannecarrig384
    @joannecarrig384 Жыл бұрын

    Thank you so much. Your videos are great and really easy to understand.

  • @Jtube0101Mega
    @Jtube0101Mega Жыл бұрын

    Great lesson! Thank you very much!

  • @dd8601
    @dd8601 Жыл бұрын

    Great explanation.thank you so much

  • @philippecourtemanche7667
    @philippecourtemanche766712 сағат бұрын

    great explanation Thanks John

  • @UmangMundhara
    @UmangMundhara Жыл бұрын

    Really appreciate your explanation , it was too clear and these concepts are pretty clear to me now

  • @sardorruziyev6919
    @sardorruziyev6919 Жыл бұрын

    Thank you John, very much appreciated!

  • @rahulbhagwat2182
    @rahulbhagwat218210 ай бұрын

    This is the guy that makes life easy when it comes to Java .....Beautiful explanation 😄

  • @muhibali205
    @muhibali2055 ай бұрын

    That's so cool. Loved your video. You got a sub mate !! 👏👏💖💖

  • @koksalocal7153
    @koksalocal715311 ай бұрын

    Thank you john for your precious informations and waiting for the next ones😊

  • @sarahjuliana7683
    @sarahjuliana7683 Жыл бұрын

    John, you are awesome. Thank you for your work !

  • @balag3611
    @balag3611 Жыл бұрын

    Ur explanation way are such incredible.Thank you bro . Definitely your channel will 1M subscribtion in the future....Can u say what type IDE r u using

  • @flytoinfinityvivi
    @flytoinfinityvivi13 күн бұрын

    This is the most amazing course ever! Exactly what I want to know regarding of why use one from the other. Best examples and I got it rightaway. This guy is genius and should be a professor instead.

  • @AbdullohHamidullayev-qm3ls
    @AbdullohHamidullayev-qm3lsАй бұрын

    thank you so much for your lessons

  • @dypsking3414
    @dypsking34142 жыл бұрын

    Super clean & neat explanation 💕

  • @mahmad9095
    @mahmad90952 жыл бұрын

    Thanks for the awesome video. I had bought some Java course on Udemy and I keep coming to your videos as you explain them in a much better way than those in Udemy.

  • @hyzer.flipr0
    @hyzer.flipr0 Жыл бұрын

    This was an excellent video. Thank you.

  • @gabrielcifuentes916
    @gabrielcifuentes9162 жыл бұрын

    i remember when i was in my degree on structure topic, we learned linked list, double linkdlist an so on. Great times

  • @fcbarcatv-ou4ww
    @fcbarcatv-ou4ww Жыл бұрын

    i have so much respect for you good sir. you are carrying my revisions

  • @elixerprince_art
    @elixerprince_art5 ай бұрын

    You my good sir are a great Java teacher!

  • @skinnyassc9275
    @skinnyassc9275 Жыл бұрын

    thanks for the important knowledge.

  • @LuisAguilar-hp3lq
    @LuisAguilar-hp3lq2 жыл бұрын

    Loved your explanation

  • @bradcabbage5132
    @bradcabbage5132 Жыл бұрын

    i love you john ur keeping me hungry for more knowledge

  • @ayseklnc1650
    @ayseklnc16503 ай бұрын

    farklı bir dilde olmasına rağmen çok başarılı bir anlatımınız var ,tebrikler

  • @RonanClancy
    @RonanClancy2 жыл бұрын

    Excellent! Great explanation! Thanks

  • @muhammed__5
    @muhammed__54 ай бұрын

    Really love it ur videos John!

  • @kaledbrahmi3442
    @kaledbrahmi34422 жыл бұрын

    Thank you, I was struggling to understand the difference and now is all clear. Btw I like your channel and I wish you to grow because you deserve it.

  • @CodingWithJohn

    @CodingWithJohn

    2 жыл бұрын

    No problem at all. Thanks for the kind words, and thanks for watching!

  • @theblindprogrammer

    @theblindprogrammer

    2 жыл бұрын

    ArrayList is really heavily used in Android as well.

  • @badwrong
    @badwrong2 жыл бұрын

    The traversal of a linked-list is slower than shifting all the elements of an array list by one. So, with larger amounts of data modifying a linked-list becomes exponentially slower and produces many cache misses.

  • @mdzaidsiddiqui4262
    @mdzaidsiddiqui4262 Жыл бұрын

    Loved the explanation! (And the Beatles) A channel worth subscribing.

  • @Halilbayrak9191
    @Halilbayrak91912 жыл бұрын

    Thank you very much ,it is very clear !!

  • @panditfamily4202
    @panditfamily42022 жыл бұрын

    Superbly explained 😍....just awesome 👍

  • @MrAikien
    @MrAikien Жыл бұрын

    Great video! 👌👍 Thanks! 🙏

  • @jordanmcguire2344
    @jordanmcguire23442 жыл бұрын

    Thank you so much. I am glad I watched this.

  • @Anonymous-ot2kk
    @Anonymous-ot2kk6 ай бұрын

    Thanks for this video 🙏

  • @wristdisabledwriter2893
    @wristdisabledwriter28932 жыл бұрын

    Perfect timing I meant to ask you for this

  • @nicholaswhite7351
    @nicholaswhite7351Ай бұрын

    Thank you for you work.

  • @tian_wijaya
    @tian_wijaya Жыл бұрын

    great explanation, thank you

  • @franciscogaz4995
    @franciscogaz4995 Жыл бұрын

    Thnaks for yours Videos, are Great...regards from Mexico.

  • @Sear-hh4gf
    @Sear-hh4gf2 жыл бұрын

    You’re awesome John, thank you!

  • @sekharreddy3236
    @sekharreddy32362 жыл бұрын

    You are awesome sir, appreciate your detailed explanation

  • @jvsnyc
    @jvsnyc2 жыл бұрын

    ArrayList is still great if you are adding tons of stuff only to the end. It only needs to move stuff over when adding *not* at the end, otherwise it just places the element at the end and updates the current size. Additionally, it only needs to create a new array and copy everything over when the reserved capacity is exhausted. If you are keeping a reference to some node deep in the midst of the LinkedList, and adding or removing around *that*, then the LinkedList is faster. Also, if for some reason you are often adding and removing right at the beginning, a LinkedList comes into its own. Lastly, there is more memory overhead and less cache coherence with LinkedList. A funny quote I remember: “Does anyone actually use LinkedList? I wrote it, and I never use it.” Joshua Bloch Searching that gives some interesting information on it. As you said tho, for small data sizes, either of them would work great, you will likely never notice a difference unless your data gets larger.

  • @DanielNit

    @DanielNit

    2 жыл бұрын

    I use LinkedLists a lot for exactly the memory reason. Namely no memory fragmentation. Where an ArrayList occupies new bigger and bigger chunks as it grows, it leaves the old memory segments behind that are too small for the new List to fit into. Thus memory will easily look like swiss cheese with lots of unuseable free memory inbetween. The LinkedLust however can place its nodes into "any tiny spot" and thus saturate memory more dynamically. So while a LL sure performs worse as a main read-object, the write-benefits outweigh for temporary and dynamic data in my opinion.

  • @jvsnyc

    @jvsnyc

    2 жыл бұрын

    @@DanielNit what you describe can be true in some circumstances, I believe it is less relevant in garbage collected systems with a mature and evolved collector. That is, the jvm has freedom to do a lot of heap cleanup behind the scenes. It was relevant in c and c++ for me however. If you are often adding or removing far from the ends the linked list is great. Arraydeque comes into its own when all or most of the adds and removes are at or near either or both ends. For small data, none of this makes much difference. For larger data profiling one's heap interactions can answer the question for the actual combination of data, code and jvm/gc implementation.

  • @DanielNit

    @DanielNit

    2 жыл бұрын

    Sure in managed languages like Java, it likely wont have that much of an impact, but as most things, it is situational. Henve why I specifically refered to dynamic and temporary use cases and it all surely only matters at bigger sizes. So tens of thousands, millions and more, as well as services/servers that continously run for a long time. That said, I didnt doubt your expertise or anything but it is merely my quirk with fragmentations from many languages with absolutely no solutions against these issues but similar data structures as described in this video. Also happy new yeah ^_^

  • @jvsnyc

    @jvsnyc

    2 жыл бұрын

    @@DanielNit you too. Fragmentation is a huge issue in non-managed systems if ignored. Large commercial systems I worked on addressed it on at least two levels and it was still something to consider even then. I have spent less time so far monitoring pure Java systems, and gc is one area that may change and evolve more as it doesn't affect the api's. Happy new year!

  • @schwingedeshaehers

    @schwingedeshaehers

    2 жыл бұрын

    @@DanielNit if there is place behind the current array, it should expend in that, and don't take a new place. Else the question is, if the overhead of the linked list is worth it, to not take a chunk of memory. (Together with the get time complexity)

  • @lunarieu4815
    @lunarieu48157 ай бұрын

    John thanks a million for your videos, can you do a video comparing Singly Linked List vs Doubly Linked List ? thanks a million!

  • @TheCanuckman75
    @TheCanuckman752 жыл бұрын

    Wow this channel is amazing. Subscribed! I have an interview tomorrow, and will definitely be using your videos to learn Java if it doesn’t go well!

  • @CodingWithJohn

    @CodingWithJohn

    2 жыл бұрын

    Hope it goes well! And also hope you come back to learn more even if it does go well 😀

  • @TheCanuckman75

    @TheCanuckman75

    2 жыл бұрын

    @@CodingWithJohn will definitely use your channel to learn!

  • @TheCanuckman75

    @TheCanuckman75

    2 жыл бұрын

    @@CodingWithJohn I think it went well!! Will probably hear back some time next week! Thank you again!

  • @DavidMerinos
    @DavidMerinos2 жыл бұрын

    This is applyable to C/C++ too and is usually an interview questiton (differences between Array and Linked lists)

  • @forbidden-cyrillic-handle

    @forbidden-cyrillic-handle

    Жыл бұрын

    Oh, wow. Here they usually go asking about very specific and obscure algorithm that you have only 0.001% chance to know. And if you happen to know the answer and get the job, you later realize that specific algorithm is never used in their projects.

  • @DucabeloEosImaginarios
    @DucabeloEosImaginarios9 ай бұрын

    Your channel is amazing!