עיבוד מערך עם Apache Commons Lang 3

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

ספריית Apache Commons Lang 3 מספקת תמיכה במניפולציה של מחלקות הליבה של ממשקי ה- API של Java. תמיכה זו כוללת שיטות לטיפול בחוטים, מספרים, תאריכים, מקביליות, השתקפות עצמים ועוד.

במדריך מהיר זה נתמקד בעיבוד מערכים עם שימושי מאוד ArrayUtils מחלקת שירות.

2. תלות של Maven

על מנת להשתמש בספריית Commons Lang 3, פשוט משוך אותה ממאגר Maven המרכזי תוך שימוש בתלות הבאה:

 org.apache.commons commons-lang3 3.5 

תוכל למצוא את הגרסה האחרונה של ספרייה זו כאן.

3. ArrayUtils

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

חלק זה ממחיש כמה שיטות שהוגדרו בסעיף ArrayUtils מעמד. שים לב שכל השיטות הללו יכולות לעבוד עם כל סוג אלמנט.

מטעמי נוחות, טעמיהם העמוסים מוגדרים גם לטיפול במערכים המכילים סוגים פרימיטיביים.

4. לְהוֹסִיף ו הוסף הכל

ה לְהוֹסִיף השיטה מעתיקה מערך נתון ומכניסה אלמנט נתון במיקום נתון במערך החדש. אם המיקום לא צוין, האלמנט החדש נוסף בסוף המערך.

שבר הקוד הבא מכניס את המספר אפס במיקום הראשון של ה- oldArray מערך ומאמת את התוצאה:

int [] oldArray = {2, 3, 4, 5}; int [] newArray = ArrayUtils.add (oldArray, 0, 1); int [] expectArray = {1, 2, 3, 4, 5}; assertArrayEquals (expectArray, newArray);

אם המיקום לא צוין, האלמנט הנוסף מתווסף בסוף oldArray:

int [] oldArray = {2, 3, 4, 5}; int [] newArray = ArrayUtils.add (oldArray, 1); int [] expectArray = {2, 3, 4, 5, 1}; assertArrayEquals (expectArray, newArray);

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

int [] oldArray = {0, 1, 2}; int [] newArray = ArrayUtils.addAll (oldArray, 3, 4, 5); int [] expectArray = {0, 1, 2, 3, 4, 5}; assertArrayEquals (expectArray, newArray);

5. לְהַסִיר ו להסיר את כל

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

שיטה זו מחזירה מערך חדש במקום לבצע שינויים במקור המקורי:

int [] oldArray = {1, 2, 3, 4, 5}; int [] newArray = ArrayUtils.remove (oldArray, 1); int [] expectArray = {1, 3, 4, 5}; assertArrayEquals (expectArray, newArray);

ה להסיר את כל השיטה מסירה את כל האלמנטים במיקומים שצוינו ממערך נתון:

int [] oldArray = {1, 2, 3, 4, 5}; int [] newArray = ArrayUtils.removeAll (oldArray, 1, 3); int [] expectArray = {1, 3, 5}; assertArrayEquals (expectArray, newArray);

6. removeElement ו remove Elements

ה removeElement שיטה מסירה את המופע הראשון של אלמנט שצוין ממערך נתון.

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

int [] oldArray = {1, 2, 3, 3, 4}; int [] newArray = ArrayUtils.removeElement (oldArray, 3); int [] expectArray = {1, 2, 3, 4}; assertArrayEquals (expectArray, newArray);

ה remove Elements השיטה מסירה את המופעים הראשונים של אלמנטים שצוינו ממערך נתון.

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

int [] oldArray = {1, 2, 3, 3, 4}; int [] newArray = ArrayUtils.removeElements (oldArray, 2, 3, 5); int [] expectArray = {1, 3, 4}; assertArrayEquals (expectArray, newArray);

7. ה removeAllOccurences ממשק API

ה removeAllOccurences השיטה מסירה את כל המופעים של האלמנט שצוין מהמערך הנתון.

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

int [] oldArray = {1, 2, 2, 2, 3}; int [] newArray = ArrayUtils.removeAllOccurences (oldArray, 2); int [] expectArray = {1, 3}; assertArrayEquals (expectArray, newArray);

8. ה מכיל ממשק API

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

int [] מערך = {1, 3, 5, 7, 9}; evenContained בוליאני = ArrayUtils.contains (מערך, 2); oddContained בוליאני = ArrayUtils.contains (מערך, 7); assertEquals (false, evenContained); assertEquals (true, oddContained);

9. ה לַהֲפוֹך ממשק API

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

בואו נסתכל על מהיר:

int [] originalArray = {1, 2, 3, 4, 5}; ArrayUtils.reverse (OriginalArray, 1, 4); int [] expectArray = {1, 4, 3, 2, 5}; assertArrayEquals (expectArray, originalArray);

אם לא מצוין טווח, סדר כל האלמנטים הופך:

int [] originalArray = {1, 2, 3, 4, 5}; ArrayUtils.reverse (originalArray); int [] expectArray = {5, 4, 3, 2, 1}; assertArrayEquals (expectArray, originalArray);

10. ה מִשׁמֶרֶת ממשק API

ה מִשׁמֶרֶת השיטה מעבירה סדרה של אלמנטים במערך נתון למספר מיקומים. שיטה זו מבצעת שינויים במערך שהועבר במקום להחזיר אחד חדש.

שבר הקוד הבא מעביר את כל האלמנטים בין האלמנטים באינדקס 1 (כולל) לאינדקס 4 (בלעדי) עמדה אחת ימינה ומאשר את התוצאה:

int [] originalArray = {1, 2, 3, 4, 5}; ArrayUtils.shift (OriginalArray, 1, 4, 1); int [] expectArray = {1, 4, 2, 3, 5}; assertArrayEquals (expectArray, originalArray);

אם לא מוגדרים גבולות הטווח, כל האלמנטים במערך מועברים:

int [] originalArray = {1, 2, 3, 4, 5}; ArrayUtils.shift (originalArray, 1); int [] expectArray = {5, 1, 2, 3, 4}; assertArrayEquals (expectArray, originalArray);

11. ה מערך משנה ממשק API

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

int [] oldArray = {1, 2, 3, 4, 5}; int [] newArray = ArrayUtils.subarray (oldArray, 2, 7); int [] expectArray = {3, 4, 5}; assertArrayEquals (expectArray, newArray);

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

12. ה לְהַחלִיף ממשק API

ה לְהַחלִיף השיטה מחליפה סדרה של אלמנטים במיקומים שצוינו במערך הנתון.

שבר הקוד הבא מחליף שתי קבוצות של אלמנטים שמתחילים באינדקסים 0 ו -3, כאשר כל קבוצה מכילה שני אלמנטים:

int [] originalArray = {1, 2, 3, 4, 5}; ArrayUtils.swap (originalArray, 0, 3, 2); int [] expectArray = {4, 5, 3, 1, 2}; assertArrayEquals (expectArray, originalArray);

אם לא מועבר טיעון אורך, מוחלף רק אלמנט אחד בכל עמדה:

int [] originalArray = {1, 2, 3, 4, 5}; ArrayUtils.swap (originalArray, 0, 3); int [] expectArray = {4, 2, 3, 1, 5}; assertArrayEquals (expectArray, originalArray);

13. מסקנה

מדריך זה מציג את כלי עיבוד הליבה של מערך הליבה ב- Apache Commons Lang 3 - ArrayUtils.

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


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