הסר את האלמנט הראשון מרשימה

1. סקירה כללית

במדריך סופר-מהיר זה, נראה כיצד להסיר את האלמנט הראשון מ- a רשימה.

אנו מבצעים פעולה זו לשתי יישומים נפוצים של ה- רשימה ממשק - רשימת מערך ו רשימה מקושרת.

2. יצירת א רשימה

ראשית, בואו לאכלס את שלנו רשימהs:

@ לפני init בטל פומבי () {list.add ("חתול"); list.add ("כלב"); list.add ("חזיר"); list.add ("פרה"); list.add ("עז"); linkedList.add ("חתול"); linkedList.add ("כלב"); linkedList.add ("חזיר"); linkedList.add ("פרה"); linkedList.add ("עז"); }

3. רשימת מערך

שנית, בואו נסיר את האלמנט הראשון מה- רשימת מערך, וודא שהרשימה שלנו לא מכילה אותה יותר:

@Test הציבור בטל givenList_whenRemoveFirst_thenRemoved () {list.remove (0); assertThat (רשימה, hasSize (4)); assertThat (רשימה, לא (מכיל ("חתול"))); }

כפי שמוצג לעיל, אנו משתמשים הסר (אינדקס) שיטה להסרת האלמנט הראשון - זה יעבוד גם לכל יישום של רשימה מִמְשָׁק.

4. רשימה מקושרת

רשימה מקושרת גם מיישם הסר (אינדקס) שיטה (בדרכה שלה) אבל יש לה גם את removeFirst () שיטה.

בואו נוודא שזה עובד כמצופה:

@Test הציבור בטל givenLinkedList_whenRemoveFirst_thenRemoved () {linkedList.removeFirst (); assertThat (linkedList, hasSize (4)); assertThat (linkedList, not (contains ("cat"))); }

5. מורכבות זמן

למרות שהשיטות נראות דומות, יעילותן שונה. רשימת מערךשל לְהַסִיר() השיטה דורשת זמן O (n) ואילו רשימה מקושרתשל removeFirst () השיטה דורשת זמן O (1).

זה בגלל ש רשימת מערך משתמש במערך מתחת למכסה המנוע, וב- לְהַסִיר() הפעולה דורשת העתקה של שאר המערך להתחלה. ככל שהמערך גדול יותר, כך יש להזיז יותר אלמנטים.

שלא כמו זה, רשימה מקושרת משתמש במצביעים כלומר כל אלמנט מצביע על הבא לקודם.

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

6. מסקנה

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

כרגיל, קוד המקור השלם זמין ב- GitHub.


$config[zx-auto] not found$config[zx-overlay] not found