כיצד להפוך מערך ב- Java

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

במאמר מהיר זה, נראה כיצד נוכל להפוך מערך בג'אווה.

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

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

2. הגדרת הבעיה

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

פירות = {"תפוחים", "עגבניות", "בננות", "גויאבות", "אננס"}

ברצוננו להשיג:

invertedFruits = {"אננסים", "גויאבות", "בננות", "עגבניות", "תפוחים"}

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

3. שימוש במסורתית ל לוּלָאָה

הדרך הראשונה בה אנו עשויים לחשוב להפוך מערך היא באמצעות a ל לוּלָאָה:

בטל invertUsingFor (מערך אובייקט []) עבור (int i = 0; i <array.length / 2; i ++) {temp temp = array [i]; מערך [i] = מערך [array.length - 1 - i]; מערך [array.length - 1 - i] = temp; }}

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

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

4. שימוש ב- Java 8 זרם ממשק API

אנו יכולים גם להפוך מערך באמצעות ממשק ה- API של Stream:

אובייקט [] invertUsingStreams (אובייקט [] מערך) {return IntStream.rangeClosed (1, array.length) .mapToObj (i -> array [array.length - i]) .toArray (); }

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

5. שימוש Collections.reverse ()

בואו נראה כיצד להפוך מערך באמצעות ה- Collections.reverse () שיטה:

חלל ציבורי invertUsingCollectionsReverse (אובייקט [] מערך) {List list = Arrays.asList (array); Collections.reverse (רשימה); }

לעומת הדוגמאות הקודמות, זוהי דרך קריאה יותר לבצע את המשימה.

6. שימוש באפצ'י קומונס לאנג

אפשרות נוספת להפוך מערך היא להשתמש ב- אפאצ'י קומונס לאנג סִפְרִיָה. כדי להשתמש בו, ראשית עלינו לכלול את הספרייה כתלות:

 org.apache.commons commons-lang3 3.5 

הגרסה האחרונה של קומונס לאנג ניתן למצוא ב Maven Central.

בואו נשתמש ב- ArrayUtils מחלקה כדי להפוך את המערך:

חלל ציבורי invertUsingCommonsLang (מערך אובייקט []) {ArrayUtils.reverse (מערך); }

כפי שאנו רואים, פתרון זה הוא די פשוט.

7. שימוש בגוגל גויאבה

אפשרות נוספת היא להשתמש ב- גויאבה של גוגל סִפְרִיָה. בדיוק כמו שעשינו עם ה- קומונס לאנג, נכלול את הספרייה כתלות:

 com.google.guava גויאבה 22.0 

את הגרסה האחרונה ניתן למצוא ב- Maven Central.

ואז נוכל להשתמש ב- לַהֲפוֹך שיטה ב של גויאבהרשימות מחלקה כדי להפוך את המערך:

אובייקט ציבורי [] invertUsingGuava (אובייקט [] מערך) {List list = Arrays.asList (array); רשימה הפוכה = Lists.reverse (רשימה); להחזיר הפוך. toArray (); }

8. מסקנה

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

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