LinkedList εναντίον ArrayList στην Java: Μάθετε τις βασικές διαφορές



Αυτό το άρθρο LinkedList vs ArrayList θα σας δώσει μια σωστή σύγκριση μεταξύ των λιστών που εφαρμόζουν τη διεπαφή λίστας

Λίστα στην Java είναι μια υπο-διεπαφή του που παρέχει βέλτιστες λύσεις με έννοιες όπως πρόσβαση θέσης, επανάληψη και ούτω καθεξής. Σε αυτό το άρθρο, θα συζητήσω τις σημαντικές διαφορές μεταξύ της διεπαφής λίστας LinkedList εναντίον ArrayList στην Java.

Ακολουθούν τα θέματα που καλύπτονται σε αυτό το άρθρο:





Ας ξεκινήσουμε!

Τι είναι το LinkedList;

Μετά συστοιχίες , η δεύτερη πιο δημοφιλής δομή δεδομένων είναι σίγουρα ένα . Μια συνδεδεμένη λίστα είναι μια γραμμική δομή δεδομένων που αποτελείται από ένααλυσίδα κόμβων όπου κάθε κόμβος περιέχει μια τιμή και έναδείκτηςστον επόμενο κόμβο της αλυσίδας.Επίσης, tΟ τελευταίος σύνδεσμος σε μια συνδεδεμένη λίστα δείχνει το μηδέν, υποδεικνύοντας το τέλος της αλυσίδας.Ένα στοιχείο σε μια συνδεδεμένη λίστα ονομάζεται a κόμβος .Ο πρώτος κόμβος στη λίστα ονομάζεται κεφάλι .Ο τελευταίος κόμβος ονομάζεται ουρά .



Επιτρέψτε μου να σας δώσω ένα απλό παράδειγμα: Φανταστείτε μια αλυσίδα συνδετήρων που συνδέονται μεταξύ τους. Μπορείτε εύκολα να προσθέσετε ένα άλλο συνδετήρα πάνω ή κάτω. Είναι επίσης εύκολο να τοποθετήσετε ένα στη μέση. Το μόνο που έχετε να κάνετε είναι να σπάσετε την αλυσίδα στη μέση, να προσθέσετε ένα νέο συνδετήρα και να επανασυνδέσετε το άλλο μισό. Μια συνδεδεμένη λίστα είναι παρόμοια με αυτήν.

Παράδειγμα:

πακέτο MyPackage import java.util.LinkedList import java.util.ListIterator public class Linkedlist {public static void main (String args []) {/ * Δήλωση συνδεδεμένης λίστας * / LinkedListl_list = new LinkedList () / * add (String Item) είναι χρησιμοποιείται για την προσθήκη * των στοιχείων στη συνδεδεμένη λίστα * / l_list.add ('Java') l_list.add ('Python') l_list.add ('Scala') l_list.add ('Swift') System.out.println ( 'Περιεχόμενο συνδεδεμένης λίστας:' + l_list) / * Προσθήκη στοιχείων σε καθορισμένη θέση * / l_list.add (2, 'JavaScript') l_list.add (3, 'Kotlin') System.out.println ('l_list Περιεχόμενο μετά την επεξεργασία: '+ l_list) / * Προσθήκη πρώτου και τελευταίου αντικειμένου * / l_list.addFirst (' First Course ') l_list.addLast (' Last Course ') System.out.println (' l_list Περιεχόμενο μετά την προσθήκη: '+ l_list) / * Λήψη και ορίστε στοιχεία στη λίστα * / Object firstvar = l_list.get (0) System.out.println ('First Item:' + firstvar) l_list.set (0, 'Java9') System.out.println ('l_list Content μετά την ενημέρωση του πρώτου αντικειμένου: '+ l_list) / * Κατάργηση από μια θέση * / l_list.remove (1) l_list.remove (2) System.out.println ('LinkedList μετά τη διαγραφή του στοιχείου στη 2η και 3η θέση' + l_list) / * Κατάργηση πρώτου και τελευταίου στοιχείου * / l_list.removeFirst () l_list.removeLast () System.out.println ('Τελικό περιεχόμενο μετά την κατάργηση του πρώτου και του τελευταίου στοιχείου : '+ l_list) / * Επανάληψη της συνδεδεμένης λίστας * / ListIteratoritrator = l_list.listIterator () System.out.println (' Λίστα εμφανίζεται με χρήση iterator: ') ενώ (itrator.hasNext ()) {System.out.println (itrator .Επόμενο()) } } }

Παραγωγή:



Περιεχόμενο συνδεδεμένης λίστας = {Java, Python, Scala, Swift} Περιεχόμενο μετά την επεξεργασία = {Java, Python, JavaScript, Kotlin, Scala, Swift} Περιεχόμενο μετά την προσθήκη = {First Course, Java, Python, JavaScript, Kotlin, Scala, Swift, Τελευταίο μάθημα} Πρώτο αντικείμενο = {Πρώτο μάθημα} Περιεχόμενο μετά την ενημέρωση του πρώτου αντικειμένου = {Java9, Java, Python, JavaScript, Kotlin, Scala, Swift, Last Course} Περιεχόμενο μετά τη διαγραφή του στοιχείου στη 2η και 3η θέση = {Java9, Python, Kotlin, Scala, Swift, Last Course} Τελικό περιεχόμενο μετά την κατάργηση του πρώτου και του τελευταίου Item = {Python, Kotlin, Scala, Swift} Λίστα που εμφανίζεται χρησιμοποιώντας iterator = Python Kotlin Scala Swift

Τώρα, ας προχωρήσουμε στο επόμενο θέμα.

Τι είναι το ArrayList;

είναι η εφαρμογή της διασύνδεσης λίστας όπου τα στοιχεία μπορούν να προστεθούν ή να αφαιρεθούν δυναμικά από την αντίστοιχη λίστα. Εδώ, το μέγεθος της λίστας αυξάνεται δυναμικά εάν τα στοιχεία προστίθενται περισσότερο από το αρχικό ή το πραγματικό μέγεθος. Αν και μπορεί να είναι πιο αργή από τις τυπικές συστοιχίες, μπορεί να είναι χρήσιμη σε προγράμματα όπου απαιτείται πολλή χειραγώγηση στον πίνακα.

LinkedList-vs-ArrayList-in-Java-Edureka

Το ArrayList χρησιμοποιείται για τους εξής σκοπούς:

  • Το ArrayList στη Java είναι συνηθισμένο κατάστημα μια δυναμική συλλογή στοιχείων.
  • Αρχικοποιείται από ένα μέγεθος. Ωστόσο, το μέγεθος μπορεί να αυξηθεί εάν η συλλογή μεγαλώσει και συρρικνωθεί εάν τα αντικείμενα αφαιρεθούν από το .
  • Επίσης, το ArrayList σας επιτρέπει να έχετε τυχαία πρόσβαση στη λίστα.

Ας προχωρήσουμε μπροστά και να επισημάνουμε τις ομοιότητες μεταξύ LinkedList και ArrayList στην Java.

Ομοιότητες μεταξύ LinkedList και ArrayList

Αυτές είναι οι αξιοσημείωτες ομοιότητες μεταξύ LinkedList και ArrayList στην Java.

  • ArrayList και LinkedList είναι οι υλοποιήσεις του Διεπαφή λίστας .
  • Τόσο το ArrayList όσο και το LinkedList διατηρούν τη σειρά εισαγωγής των στοιχείων. Αυτό σημαίνει ότι, ενώ εμφανίζονται τα στοιχεία λίστας, το σύνολο αποτελεσμάτων θα έχει την ίδια σειρά με την οποία τα στοιχεία εισήχθησαν στη λίστα.
  • Αυτές οι τάξεις ArrayList και LinkedList δεν είναι συγχρονισμένες και μπορούν να γίνουν συγχρονισμένες ρητά χρησιμοποιώντας Συλλογές Συγχρονισμένη λίστα μέθοδος.
  • Ο επαναληπτής και το ListIterator που επιστρέφονται από αυτές τις τάξεις είναι γρήγοροι. Αυτό σημαίνει ότι, εάν η λίστα τροποποιηθεί δομικά οποιαδήποτε στιγμή μετά τη δημιουργία του επαναληπτικού, εκτός από τοοι μέθοδοι αφαίρεσης ή προσθήκης του iterator, ο επαναληπτής θα ρίξει ένα ConcurrentModificationException .

Διαφορές μεταξύ LinkedList και ArrayList

Αρχικά, ας ρίξουμε μια ματιά στις παραμέτρους για να συγκρίνουμε το LinkedList έναντι του ArrayList στην Java.

Παράμετροι για σύγκριση LinkedList και ArrayList στην Java:

  • Λειτουργία
  • Εκτέλεση
  • Επεξεργάζομαι, διαδικασία
  • Μνήμη
  1. Λειτουργίες

Οι ενέργειες εισαγωγής, προσθήκης και αφαίρεσης ενός αντικειμένου είναι ταχύτερες σε ένα Συνδεδεμένη λίστα γιατί δεν χρειάζεται να αλλάξουμε το μέγεθος όπως κάνουμε Λίστα Array

2. Εκτέλεση

Λίστα Array βασίζεται στο έννοια μιας δυναμικής αλλαγής μεγέθους πίνακα, ενώ Συνδεδεμένη λίστα βασίζεται σε διπλή συνδεδεμένη εφαρμογή λίστας

3. Επεξεργάζομαι, διαδικασία

ΠΡΟΣ ΤΟ Συνδεδεμένη λίστα Η κλάση μπορεί να χρησιμοποιηθεί ως λίστα και ουρά επειδή εφαρμόζει τις διασυνδέσεις List και Deque, ενώ το ArrayList μπορεί να εφαρμόσει λίστες μόνο.

Τέσσερα. Μνήμη

ΠΡΟΣ ΤΟ Συνδεδεμένη λίστα καταναλώνει περισσότερη μνήμη από μια Λίστα Array γιατί κάθε κόμβος σε ένα Συνδεδεμένη λίστα αποθηκεύει δύο αναφορές, ενώ Λίστα Array διατηρεί μόνο δεδομένα και το ευρετήριό του

LinkedList εναντίον ArrayList στην Java

ΠαράμετροιΣυνδεδεμένη λίσταΛίστα Array
Λειτουργίες

Οι εργασίες εισαγωγής, προσθήκης και αφαίρεσης είναι πολύ πιο γρήγορες

Συγκριτικά οι λειτουργίεςείναι αργά εδώ

Εκτέλεση

Ακολουθεί την εφαρμογή λίστας με διπλή σύνδεση

Ακολουθεί την έννοια της δυναμικής αλλαγής μεγέθους πίνακα

Επεξεργάζομαι, διαδικασία

Μια κλάση LinkedList μπορεί να είναι μια λίστα και μια ουρά επειδή εφαρμόζει τις διασυνδέσεις List και Deque

Μια τάξη ArrayList μπορεί να είναι μια λίστα επειδή εφαρμόζει μόνο λίστες

Μνήμη

Η κατανάλωση μνήμης στο LinkedList είναι υψηλή

μοτίβο σχεδίασης mvc στην Ιάβα

Λιγότερο σε σύγκριση με το LinkedList

Αυτό ήταν παιδιά! Αυτό μας φέρνει στο τέλος αυτού του άρθρου σχετικά με το LinkedList εναντίον ArrayList στην Java. Ελπίζω να είστε ξεκάθαροι με αυτό που διδάσκεται σε αυτό το άρθρο.

Εάν βρήκατε αυτό το άρθρο στο 'LinkedList vs ArrayList in Java', ρίξτε μια ματιά στο από την Edureka, μια αξιόπιστη διαδικτυακή εταιρεία εκμάθησης με δίκτυο περισσότερων από 250.000 ικανοποιημένων μαθητών σε όλο τον κόσμο. Είμαστε εδώ για να σας βοηθήσουμε σε κάθε βήμα του ταξιδιού σας και έχουμε ένα πρόγραμμα σπουδών που έχει σχεδιαστεί για μαθητές και επαγγελματίες που θέλουν να γίνουν προγραμματιστές Java.