When To Use ArrayList Vs LinkedList In Java? [Answered] - Java67
Maybe your like
Pages
- Home
- core java
- spring
- online courses
- thread
- java 8
- coding
- sql
- books
- oop
- interview
- certification
- free resources
- best
When to use ArrayList vs LinkedList in Java
Before comparing differences between ArrayList and LinkedList, let's see What is common between ArrayList and LinkedList in Java : 1) Both ArrayList and LinkedList are an implementation of the List interface, which means you can pass either ArrayList or LinkedList if a method accepts the java.util.List interface. Btw, if you are new to Java's collections framework then I suggest you first go through Java Fundamentals: Collections by Richard Warburton. It's an online Java course on Pluralsight, which you can avail of free by signing their 10-day free trial. IMHO, it's worth going through that course to learn Java collections in the right way.
2) Both ArrayList and LinkedList are not synchronized, which means you can not share them between multiple threads without external synchronization. See here to know How to make ArrayList synchronized in Java. 3) ArrayList and LinkedList are ordered collection e.g. they maintain insertion order of elements i.e. the first element will be added to the first position. 4) ArrayList and LinkedList also allow duplicates and null, unlike any other List implementation e.g. Vector. 5) An iterator of both LinkedList and ArrayList are fail-fast which means they will throw ConcurrentModificationException if a collection is modified structurally once the Iterator is created. They are different than CopyOnWriteArrayList whose Iterator is fail-safe. Difference between LinkedList and ArrayList in Java
Now let's see some differences between ArrayList and LinkedList and when to use ArrayList and LinkedList in Java. 1. Underlying Data Structure The first difference between ArrayList and LinkedList comes with the fact that ArrayList is backed by Array while LinkedList is backed by LinkedList. This will lead to further differences in performance. 2. LinkedList implements Deque Another difference between ArrayList and LinkedList is that apart from the List interface, LinkedList also implements the Deque interface, which provides first in first out operations for add() and poll() and several other Deque functions. Also, LinkedList is implemented as a doubly-linked list and for index-based operation, navigation can happen from either end (see Complete Java MasterClass). 3. Adding elements in ArrayList Adding an element in ArrayList is O(1) operation if it doesn't trigger re-size of Array, in which case it becomes O(log(n)), On the other hand, appending an element in LinkedList is O(1) operation, as it doesn't require any navigation. 4. Removing an element from a position In order to remove an element from a particular index e.g. by calling remove(index), ArrayList performs a copy operation which makes it close to O(n) while LinkedList needs to traverse to that point which also makes it O(n/2), as it can traverse from either direction based upon proximity. 5. Iterating over ArrayList or LinkedList Iteration is the O(n) operation for both LinkedList and ArrayList where n is a number of an element. 6. Retrieving element from a position The get(index) operation is O(1) in ArrayList while its O(n/2) in LinkedList, as it needs to traverse till that entry. Though, in Big O notation O(n/2) is just O(n) because we ignore constants there. If you want to learn more about how to calculate time and space complexity for your algorithms using Big O notation, I recommend reading Grokking Algorithms by Aditya Bhargava, one of the most interesting books on this topic I have read ever.
7. Memory LinkedList uses a wrapper object, Entry, which is a static nested class for storing data and two nodes next and previous while ArrayList just stores data in Array. So memory requirement seems less in the case of ArrayList than LinkedList except for the case where Array performs the re-size operation when it copies content from one Array to another. If Array is large enough it may take a lot of memory at that point and trigger Garbage collection, which can slow response time. From all the above differences between ArrayList vs LinkedList, It looks like ArrayList is the better choice than LinkedList in almost all cases, except when you do a frequent add() operation than remove(), or get(). It's easier to modify a linked list than ArrayList, especially if you are adding or removing elements from start or end because the linked list internally keeps references of those positions and they are accessible in O(1) time. In other words, you don't need to traverse through the linked list to reach the position where you want to add elements, in that case, addition becomes an O(n) operation. For example, inserting or deleting an element in the middle of a linked list. In my opinion, use ArrayList over LinkedList for most of the practical purposes in Java Other Java Collection Articles you may like- How to sort a Map by keys and values in Java? (tutorial)
- Top 10 Courses to learn Java for Beginners (best courses)
- How to sort an ArrayList in ascending and descending order in Java? (tutorial)
- 10 Free courses to learn Java in-depth (courses)
- The difference between HashMap and ConcurrentHashMap in Java? (answer)
- 10 courses to learn Data Structure in-depth (courses)
- The difference between HashMap and LinkedHashMap in Java? (answer)
- Difference between ArrayList and HashSet in Java? (answer)
- Top 5 Courses to learn Java Collections and Stream (courses)
- What is the difference between TreeMap and TreeSet in Java? (answer)
- The difference between HashSet and TreeSet in Java? (answer)
- 7 Best Courses to learn Data STructure and Algorithms (best courses)
- 20+ basic algorithms interview questions for programmers (questions)
- Top 5 Courses to become full-stack Java developer (courses)
- The difference between Hashtable and HashMap in Java? (answer)
- 50+ Core Java Interview Questions and Answers (questions)
15 comments:
AnonymousJanuary 23, 2013 at 2:11 AMNice post!Its also good to mention that ArrayList can be created with an initial array size so if you know how many items you're going to store in it you can speed up .add operations because re sizing the backed array won't be needed (unless adding more items than the initial capacity).
ReplyDeleteReplies
TryingtoLearnJavaAugust 24, 2014 at 5:17 AMAgree, Initializing List with initial capacity is very good practice to reduce load on Garbage collector and improve performance. On another note, I think LinkedList is a special implementation of List interface, which is only suitable for sequential access e.g. stacks and queues. When you start using LinkedList as array instead of linked list e.g. calling get(1), an index access you won't get O(1) performance like ArrayList, until it's very slow O(n). So always use LinkedList when you need sequential access and use ArrayList when you need random access.
DeleteReplies- Reply
Reply
AnonymousJanuary 23, 2013 at 4:47 AMJust to make sure I understand clearly, let's say I am building a list that is going to be an attribute of a domain object. It is going to created (add) and then most likely read through as needed. But not changed and not really direct index accessed. In that case despite the slightly larger memory size, the LinkedList would actually make more sense. Just making sure I read correctly.
ReplyDeleteReplies- Reply
AnonymousFebruary 6, 2013 at 9:58 PMDon't forget that when using an iterator you can .remove() while iterating causing an extremely efficient and fast removal.
ReplyDeleteReplies- Reply
GrasshoperMay 5, 2013 at 11:43 PMI know ArrayList is faster than LinkedList in most of cases e.g. getting an element form beginning, middle and end, does any one knows, when LinkdList is faster than ArrayList? I can think of only adding at the beginning, because there linked list doesn't resize, it just a pointer change, while array may resize, which is copy operation. Anything other case??
ReplyDeleteReplies
bhsMarch 30, 2014 at 2:26 PMHi Grasshoper... I think linkedlist is considered to be faster in cases where you need to frequently insert and remove elements from the list. This is because even though it might need to traverse a particular location before it can insert, once it reaches the particular location it will just point the prev's next to itself and the former prev's next to its own next. Consider this same action in array list, where you may reach the location faster using the index but when u insert in middle, you need to move all the elements following it by one, this can cause a re-size of array to. Similar is the case when u consider removal process. Hence if you know that you will be constantly modifying the internal structure it would be better to use an LinkedList.Thank you.
DeleteReplies- Reply
AnonymousJune 28, 2016 at 5:33 AMthanx
DeleteReplies- Reply
Reply
GaganJuly 22, 2013 at 6:33 AMI couldnt understand that. How array resizing for arraylist willbe done in log n ? I think it should be n
ReplyDeleteReplies
UnknownJune 19, 2014 at 12:45 PMYeah, I was about to point out the same thing. It's O(n) since you need to copy each element in the old array into the new one.
DeleteReplies- Reply
AnonymousSeptember 8, 2014 at 9:35 PMI think logn is for array get() operation in average case, inlcudin O(n) worst case when resize can happen. By the way, why does array copy needs to be O(n), isn't System.arrayCopy() can copy in blocks to include more than one element at a time?
DeleteReplies- Reply
Reply
AnonymousFebruary 3, 2015 at 11:43 AMThere is no such thing as O(n/2)
ReplyDeleteReplies- Reply
AnonymousJune 18, 2015 at 9:13 AMOne more difference you can point out is that LinkedList is also a queue but ArrayList is not, which is only true after java 6 onwards, but yes its still a difference.
ReplyDeleteReplies- Reply
UnknownMarch 8, 2018 at 7:49 AMi have a doubt here. as we know arrayList will create with size 10 initially. if i added only 3 elements to the list object what will happen for remaining empty elements.will they exist in memory or GC will clean?Thanks in advance.
ReplyDeleteReplies
javin paulMarch 9, 2018 at 3:42 AMHello @Unknown, they will exists in memory because it is allocated to underlying array and it cannot be reclaimed in parts.
DeleteReplies- Reply
Reply
AnonymousDecember 6, 2021 at 5:42 AMThe Big O Notation times given above are wrong. Java docs for ArrayList says "The size, isEmpty, get, set, iterator, and listIterator operations run in constant time. The add operation runs in amortized constant time, that is, adding n elements requires O(n) time. All of the other operations run in linear time (roughly speaking). The constant factor is low compared to that for the LinkedList implementation."where Constant time is O(1) and linear time is O(n).For LinkedList the Big O notation time is not even given in java API docs.
ReplyDeleteReplies- Reply
Feel free to comment, ask questions if you have any doubt.
Newer Post Older Post Home Subscribe to: Post Comments (Atom)Recommended Courses
- best python courses
- best java courses
- system design courses
- best spring courses
- best hibernate courses
- best design pattern courses
- best Linux courses
- best JavaScript courses
- best data structure and algorithms courses
- Best Multithreading Courses
- best MERN stack courses
- Best Git courses
- Best Microservice Courses
- Best DevOps Courses
- best MEAN stack Courses
- free Java courses
- free DSA courses
- free sql courses
- free Linux courses
- Free Docker courses
- free JUnit courses
Array Tutorials
- array - copy
- array - tutorial
- array - add/remove element
- array - linked list
- array - reverse
- array - sorting
- array - sum
- array - binary search
- array - vector
- array - remove
- array - reverse in place
- array - to list
- array - initialization
- array - insertion sort
- array - to string
- array - example
- array - data structure
- array - compare
- array - liner search
ArrayList Tutorials
- arraylist - sort
- arraylist - stream
- arraylist - remove
- arraylist - replace
- arraylist - join
- arraylist - size
- arraylist - removeAll
- arraylist - iterator
- arraylist - to set
- arraylist - hashmap
- arraylist - sort descending
- arraylist - guide
- arraylist - with values
- arraylist - concurrent modification
- arraylist - to array
- arraylist - first element
- arraylist - reverse
- arraylist - synchronized
- arraylist - copyOnWriteArrayList
Categories
- .NET
- abstract class
- ActiveMQ
- Affiliate marketing
- After Effects
- Agentic AI
- Agile
- AI Tools
- Amazon Web Service
- android
- Angular
- Anonymous class
- Ansible
- apache camel
- Apache kafka
- Apache spark
- app development
- array
- ArrayList
- Artificial Intelligence
- automation
- aws
- aws certification
- Azure Certifications
- backend development
- bash
- basics
- beginners
- best of java67
- best practices
- Big Data
- binary tree
- bit manipulation
- black friday deals
- Blockchain
- BlockingDeque
- books
- Bootstrap
- business analysis
- ByteByteGo
- C programming
- C++
- Career
- ChatGPT
- Chef
- cloud certification
- Cloud Computing
- Code Example
- Code Review
- codecademy
- Codemia
- CodeRabbit
- coding
- coding exercise
- Coding Interview
- Coding Problems
- Comparator
- computer science
- Computer Vision
- concurrency tutorial
- ConcurrentHashMap
- core java
- core java interview question answer
- course review
- Coursera
- courses
- crontab
- CSS
- Cyber Monday
- Cyber Security
- Data Analysis
- data science
- data structure and algorithm
- Data Visualization
- database
- datacamp
- date and time
- debugging
- deep learning
- default methods
- design pattern
- DevOps
- DevSecOps
- Distributed Systems
- Django
- docker
- double
- Drawing
- DSA
- dyanmic programming
- dynamic Programming
- eBooks
- Eclipse
- EJB
- enum
- equals
- error and exception
- Ethical hacking
- Excel
- exception
- Exponent
- expressjs
- FAANG
- Figma
- Firebase
- flatmap
- float
- Flutter
- free resources
- freelancing
- Frontend Masters
- fun
- Fundamental
- fundamentals
- Game development
- garbage collection
- general
- Generics
- gifts
- git and github
- golang
- Google Cloud Certification
- Google Cloud Platform
- Gradle
- grails
- graph
- graphic design
- GraphQL
- grep
- Groovy
- gRPC
- Hadoop
- HashMap
- HashSet
- haskell
- Hibernate
- Hibernate interview Question
- homework
- HTML
- HTTP
- HttpClient
- i
- interface
- Internet of Things (IoT)
- interview
- interview questions
- IT Certification
- J2EE
- Jackson
- java
- Java 5 tutorial
- java 7
- Java 8
- java 9
- java basics
- Java Certification
- Java collection tutorial
- java concurrency tutorial
- java design pattern
- Java Enum
- Java file tutorials
- Java Functional Programming
- Java Installation Guide
- Java Interview Question
- Java interview questions
- Java IO interview question
- java io tutorial
- java map tutorials
- java modules
- Java Multithreading Tutorial
- Java networking tutorial
- Java Operator tutorial
- Java programming Tutorial
- Java String tutorial
- Java7
- JavaScript
- JavaScript Interview Question
- JavaScript Tutorial
- JDBC
- JEE Interview Questions
- Jenkins
- JMS
- JPA
- jQuery
- JSON
- JSP
- JSP Interview Question
- JSTL
- JUnit
- JVM
- Keras
- keystore
- Kotlin
- kubernetes
- lambda expression
- Laraval
- learning
- linked list
- Linux
- Log4j
- logging
- Lombok
- LSAT
- Mac OS X
- machine learning
- Mathematics
- Matlab
- Maven
- MERN stack
- Messaging
- Microservices
- Microsoft
- Microsoft Azure Platform
- Microsoft Excel
- Microsoft Power BI
- Mockito
- MongoDB
- MysQL
- MySQL tutorial example
- nested class
- neural network
- Next.js
- NFT
- NLP
- Node.js
- nslookup
- object oriented programming
- OCAJP
- OCMJEA
- OCPJP
- offers
- Oracle
- Perl
- personal development
- Photoshop
- PHP
- pluralsight
- PostgerSQL
- postman
- Powerpoint
- programmers
- programming
- programming problems
- Project Management
- projects
- Prompt Engineering
- Proxy
- Python
- Pytorch
- Quarkus
- questions
- Queue
- R programming
- RabbitMQ
- React
- React Hooks
- react native
- Record
- Recursion
- Redux
- regular expression example
- REST
- REST tutorials
- Review
- RoadMap
- Ruby
- Salesforce
- SAT
- Scala
- Scala Interview Questions
- Scalability
- Scanner
- scripting
- Scrum
- Scrum Master Certification
- Selenium
- SEO
- Serialization
- Servlet
- Servlet Interview Questions
- Set
- shell scripting
- smart contracts
- Snowflake SnowPro Certification
- soft link
- soft skills
- software architecture
- Solaris
- Solidity
- Sorting Algorithm
- Spark
- spring boot
- Spring Certification
- spring cloud
- spring data jpa
- spring framework
- spring interview question
- spring mvc
- spring security
- sql
- SQL interview Question
- SQL Joins
- SQL SERVER
- ssl
- Static
- Statistics
- Stream
- String
- Struts
- Swift
- swing
- switch case
- system design
- System Design Interview Questions
- Tableau
- Tailwind
- TensorFlow
- ternary operator
- testing
- thread
- thread interview questions
- Time series analysis
- Tips
- tomcat
- tools
- tree
- TreeMap
- troubleshooting
- TypeScript
- Udacity
- Udemy
- UI and UX Design
- UML
- unit testing
- Unity 3D
- Unix
- unreal engine
- Video Editing
- Vuejs
- web design
- web development
- web scrapping
- Web Service
- Whizlabs
- Wix
- xml
- YAML
- ZTM Academy
Best System Design and Coding Interview Resources
System Design & Interview Prep
- ByteByteGo Lifetime Plan (50% OFF)
- Codemia Lifetime Plan (60% OFF)
- Exponent Annual Plan (70% OFF)
- Educative Premium Plus (55% OFF)
- DesignGurus All Course Bundle (55% OFF)
- Everything Java Interview Bundle (50% OFF)
- 101 Blockchain (50% OFF)
- Vlad Mihalcea's High Performance Bundle (50% OFF)
- Javarevisited Substack Subscription (50% OFF)
- Head First Software Architecture (Book)
Search This Blog
Best Online Learning Resources and Platforms
- Coursera Plus (40% OFF)
- Datacamp Sale (50% OFF)
- AlgoMonster Lifetime Plan (50% OFF)
- Udemy Sale (80% OFF)
- Baeldung (33% OFF)
- LabEx Sale (50% OFF)
- Codecademy Sale (60% OFF)
- Udacity Sale (50% OFF)
- ZTM Academy Sale (66% OFF)
- Frontend Masters Deal
- Whizlabs Deal (70% OFF)
Javarevisited
Loading...Spring Interview Prep List
- Spring Boot Interview questions
- Spring Cloud Interview questions
- Spring MVC Interview Questions
- Microservices Interview questions
- 10 Spring MVC annotations
- Spring Boot Courses
- Spring Framework Courses
Subscribe for Discounts and Updates
FollowInterview Questions
- core java interview questions
- SQL interview questions
- data structure interview question
- coding interview questions
- java collection interview questions
- java design pattern interview questions
- thread interview questions
- hibernate interview questions
- j2ee interview questions
- Spring Interview Questions
- object oriented programming questions
Followers
Blog Archive
- ► 2026 (23)
- ► March (1)
- ► February (15)
- ► January (7)
- ► 2025 (554)
- ► December (3)
- ► November (9)
- ► October (72)
- ► September (18)
- ► July (71)
- ► June (103)
- ► May (67)
- ► April (25)
- ► March (18)
- ► February (79)
- ► January (89)
- ► 2024 (192)
- ► December (30)
- ► October (32)
- ► September (31)
- ► August (12)
- ► July (3)
- ► June (2)
- ► May (9)
- ► April (3)
- ► March (28)
- ► February (3)
- ► January (39)
- ► 2022 (164)
- ► December (18)
- ► October (1)
- ► September (1)
- ► August (45)
- ► July (27)
- ► June (11)
- ► May (19)
- ► April (16)
- ► March (12)
- ► February (6)
- ► January (8)
- ► 2021 (104)
- ► December (6)
- ► November (2)
- ► October (13)
- ► September (18)
- ► August (31)
- ► July (34)
- ► 2020 (10)
- ► August (2)
- ► July (1)
- ► June (1)
- ► April (3)
- ► March (1)
- ► February (2)
- ► 2019 (9)
- ► December (1)
- ► November (1)
- ► October (1)
- ► September (1)
- ► July (1)
- ► June (1)
- ► April (3)
- ► 2018 (9)
- ► November (1)
- ► April (8)
- ► 2017 (4)
- ► October (1)
- ► September (2)
- ► April (1)
- ► 2015 (8)
- ► July (1)
- ► June (1)
- ► May (1)
- ► February (5)
- ► 2012 (1)
- ► September (1)
Privacy
- Privacy Policy
- Terms & Conditions
Popular Posts
- 17 Free Java Programing Books for Beginners in 2025 - download, pdf and HTML
- How to fix "illegal start of expression" error in Java? Example
- 5 Examples of Formatting Float or Double Numbers to String in Java
- Top 10 Websites to Learn JavaScript Coding for FREE in 2025 - Best of Lot
- Top 10 Frequently asked SQL Query Interview Questions Answers
Subscribe
Get new posts by email:
SubscribeTag » When Would You Use A Linked List Vs. Arraylist
-
When To Use LinkedList Over ArrayList In Java? - Stack Overflow
-
When To Use ArrayList And LinkedList In Java - Javatpoint
-
Difference Between ArrayList And LinkedList - Javatpoint
-
ArrayList Vs LinkedList In Java - GeeksforGeeks
-
Differences Between ArrayList And LinkedList In Java - Tutorialspoint
-
ArrayList Vs. LinkedList Vs. HashMap In Java - Baeldung
-
Java ArrayList Vs LinkedList - Baeldung
-
Difference Between ArrayList And LinkedList In Java
-
Performance Analysis Of ArrayList And LinkedList In Java - DZone
-
Array List Vs Linked List | Which One Should You Use?? - YouTube
-
Difference Between ArrayList & LinkedList That Everyone Should Know
-
When Would You Use An ArrayList Over A Linked List? - Quora
-
When To Use LinkedList Over ArrayList In Java | Edureka Community
-
Difference Between ArrayList And LinkedList In Java - Stack Abuse
Anonymous
Gagan