LinkedList לעומת ArrayList בג'אווה: דע את ההבדלים העיקריים



מאמר זה של LinkedList לעומת ArrayList ייתן לך השוואה נכונה בין הרשימות המיישמות את ממשק הרשימה

רשימה ב- Java הוא ממשק משנה של ה- הנותן פתרונות אופטימליים עם מושגים כמו גישה למיקום, איטרציה וכן הלאה. במאמר זה אדון בהבדלים העיקריים בין ממשק הרשימה LinkedList לעומת ArrayList ב- Java.

להלן הנושאים המכוסים במאמר זה:





בואו נתחיל!

מה זה LinkedList?

לאחר מערכים , מבנה הנתונים השני הפופולרי ביותר הוא בהחלט . רשימה מקושרת היא מבנה נתונים ליניארי אשר מורכב על ידי aשרשרת צמתים שבהם כל צומת מכיל ערך ו-מַצבִּיעַלצומת הבא בשרשרת.כמו כן, tהוא הקישור האחרון ברשימה מקושרת מצביע על null, ומציין את סוף השרשרת.אלמנט ברשימה מקושרת נקרא a צוֹמֶת .הצומת הראשון ברשימה נקרא רֹאשׁ .הצומת האחרון נקרא זָנָב .



תן לי דוגמה פשוטה לכך: דמיין שרשרת אטבים המקושרים זה לזה. ניתן להוסיף בקלות מהדק נוסף למעלה או לתחתית. קל גם להכניס אחד באמצע. כל שעליך לעשות הוא פשוט לשבור את השרשרת באמצע, להוסיף מהדק חדש, ואז לחבר מחדש את החצי השני. רשימה מקושרת דומה לזו.

דוגמא:

חבילה MyPackage ייבוא ​​java.util.LinkedList ייבוא ​​java.util.ListIterator רשימת הקישורים הציבורית {public static void main (String args []) {/ * הצהרת רשימה מקושרת * / LinkedListl_list = new LinkedList () / * הוסף (פריט מחרוזת) הוא משמש להוספת * הפריטים לרשימה המקושרת * / 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 (' מנה ראשונה ') l_list.addLast (' מנה אחרונה ') System.out.println (' l_list תוכן לאחר תוספת: '+ l_list) / * קבל והגדר פריטים ברשימה * / Object firstvar = l_list.get (0) System.out.println ('פריט ראשון:' + 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 לאחר מחיקת פריט במיקום השני וה -3' + l_list) / * הסר פריט ראשון ואחרון * / l_list.removeFirst () l_list.removeLast () System.out.println ('תוכן סופי לאחר הסרת פריט ראשון ואחרון : '+ l_list) / * ביטול הרשימה המקושרת * / ListIteratoritrator = l_list.listIterator () System.out.println (' רשימה מוצגת באמצעות איטרטור: ') ואילו (itrator.hasNext ()) {System.out.println (itrator .next ())}}}

תְפוּקָה:



מפת hash לעומת טבלת hash
תוכן רשימה מקושר = {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} Content לאחר מחיקת פריט במיקום השני והשלישי = {Java9, Python, Kotlin, Scala, Swift, Last Course} תוכן סופי לאחר הסרת פריט ראשון ואחרון = {Python, Kotlin, Scala, Swift} רשימה המוצגת באמצעות איטרטור = Python Kotlin Scala Swift

עכשיו, בואו נתקדם לנושא הבא.

מה זה ArrayList?

הוא יישום של ממשק רשימה שבו ניתן להוסיף או להסיר את האלמנטים באופן דינמי מהרשימה המתאימה. כאן, גודל הרשימה גדל באופן דינמי אם הרכיבים מתווספים יותר מהגודל הראשוני או הממשי. למרות שזה עשוי להיות איטי יותר ממערכים סטנדרטיים, זה יכול להועיל בתוכניות בהן נדרשת מניפולציה רבה במערך.

LinkedList-vs-ArrayList-in-Java-Edureka

ArrayList משמש למטרות אלה:

  • רגיל ArrayList ב- Java חנות אוסף אלמנטים בגודל דינמי.
  • זה מאותחל על ידי גודל. עם זאת, הגודל יכול לגדול אם האוסף גדל ומתכווץ אם חפצים מוסרים מה- .
  • כמו כן, ArrayList מאפשר לך לגשת באופן אקראי לרשימה.

הבה נתקדם ונצביע על קווי הדמיון בין LinkedList ל- ArrayList ב- Java.

קווי דמיון בין LinkedList ל- ArrayList

אלה הדמיון הבולט בין LinkedList ל- ArrayList בג'אווה.

  • ArrayList ו- LinkedList הם היישומים של ה- ממשק רשימה .
  • הן ArrayList והן LinkedList שומרים על סדר ההכנסה של האלמנטים. משמעות הדבר היא שבעוד הצגת אלמנטים הרשימה, ערכת התוצאות תהיה באותו הסדר שבו הרכיבים הוכנסו לרשימה.
  • מחלקות ArrayList ו- LinkedList אלה אינן מסונכרנות וניתן לבצע סינכרון מפורש באמצעותן אוספים רשימה מסונכרנת שיטה.
  • האיטרטור וה- ListIterator שהוחזרו על ידי מחלקות אלה אינם מהירים. המשמעות היא שאם הרשימה תשתנה מבנית בכל זמן נתון לאחר יצירת האיטרטור, למעט ה-הסרת או הוספה של שיטות איטרור משלה, האיטרטור יזרוק א ConcurrentModificationException .

הבדלים בין LinkedList ל- ArrayList

ראשית, בואו נסתכל על הפרמטרים להשוואה בין LinkedList לעומת ArrayList ב- Java.

פרמטרים להשוואה של LinkedList ו- ArrayList ב- Java:

  • פעולה
  • יישום
  • תהליך
  • זיכרון
  1. פעולות

פעולות ההכנסה, ההוספה וההסרה של פריט מהירות יותר ב- רשימה מקושרת כי אנחנו לא צריכים לשנות את הגודל כמו שאנחנו עושים ב רשימת מערך.

2. יישום

מה הם משתני מופע

רשימת מערך מבוסס על מושג של מערך הניתן לשינוי דינמי, בעוד רשימה מקושרת מבוסס על יישום רשימות המקושר כפליים

3. תהליך

ל רשימה מקושרת class יכול לשמש כרשימה ותור מכיוון שהוא מיישם ממשקי רשימה ו- Deque ואילו ArrayList יכול ליישם רק רשימות.

ארבע. זיכרון

ל רשימה מקושרת צורכת יותר זיכרון מאשר רשימת מערך כי כל צומת ב רשימה מקושרת מאחסן שני אזכורים, ואילו רשימת מערך מחזיקה רק נתונים והמדד שלהם

LinkedList לעומת ArrayList בג'אווה

פרמטריםרשימה מקושרתרשימת מערך
פעולות

פעולות ההכנסה, ההוספה וההסרה מהירות למדי

באופן יחסי הפעולותאיטיות כאן

יישום

עוקב אחר יישום הרשימה המקושר כפליים

עוקב אחר הרעיון של מערך לשינוי גודל דינמי

תהליך

מחלקה של LinkedList יכולה להיות רשימה ותור מכיוון שהיא מיישמת ממשקי List ו- Deque

כיתת ArrayList יכולה להיות רשימה מכיוון שהיא מיישמת רק רשימות

המרת בינארי לעשרוני בג'אווה
זיכרון

צריכת הזיכרון ב- LinkedList גבוהה

פחות בהשוואה ל- LinkedList

זה הכל אנשים! זה מביא אותנו לסוף מאמר זה בנושא ה- LinkedList לעומת ArrayList בג'אווה. אני מקווה שברור לכם מה מלמד במאמר זה.

אם מצאת מאמר זה בנושא 'LinkedList לעומת ArrayList ב- Java', עיין ב מאת אדוריקה, חברת למידה מקוונת מהימנה עם רשת של יותר מ -250,000 לומדים מרוצים הפזורים ברחבי העולם. אנחנו כאן כדי לעזור לך בכל שלב בדרכך, ואנחנו מעלים תוכנית לימודים שמיועדת לסטודנטים ואנשי מקצוע שרוצים להיות מפתח Java.