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

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

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

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

2. שימוש Arrays.copyOfRange ()

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

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

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

למרבה המזל ה- JDK מספק פונקציית עוזר סטטי נוחה שנוכל להשתמש בה, הנקראת Arrays.copyOfRange ():

מחרוזת [] stringArray = {"foo", "bar", "baz"}; מחרוזת [] modifiedArray = Arrays.copyOfRange (stringArray, 1, stringArray.length);

שים לב כי עלות פעולה זו היא עַל) מכיוון שהוא ייצור מערך חדש בכל פעם.

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

3. שימוש ב- רשימה יישום

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

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

נניח שיש לנו את הדברים הבאים רשימהs:

רשימת arrayList = ArrayList חדש (); // אכלס את רשימת ArrayList linkedList = חדש LinkedList (); // אכלס את ה- LinkedList

מכיוון ששתי המחלקות מיישמות את אותו ממשק, קוד הדוגמה להסרת האלמנט הראשון נראה זהה:

arrayList.remove (0); linkedList.remove (0);

במקרה של רשימת מערךעלות ההסרה היא עַל), בזמן רשימה מקושרת יש עלות של O (1).

עכשיו, זה לא אומר שעלינו להשתמש ב- רשימה מקושרת בכל מקום כברירת מחדל שכן העלות לאחזור אובייקט היא להיפך. עלות ההתקשרות קבל (אני) הוא O (1) במקרה של רשימת מערך ו עַל) במקרה של רשימה מקושרת.

4. מסקנה

ראינו כיצד להסיר את האלמנט הראשון של מערך ב- Java. בנוסף, בדקנו כיצד להשיג את אותה תוצאה באמצעות Java Collections Framework.

אתה יכול למצוא את קוד הדוגמה ב- GitHub.


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