רוכס אוספים בג'אווה

1. הקדמה

במדריך זה נמחיש כיצד לרכוס שני אוספים לאוסף לוגי אחד.

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

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

שקול שתי רשימות, האחת כוללת שמות של אנשים, והשנייה מכילה את גילם.

שמות רשימות = ArrayList חדש (Arrays.asList ("ג'ון", "ג'יין", "ג'ק", "דניס")); רשימת גילאים = ArrayList חדש (Arrays.asList (24, 25, 27));

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

2. שימוש ב- Java 8 IntStream

באמצעות Java הליבה נוכל ליצור אינדקסים באמצעות IntStream ואז השתמש בהם כדי לחלץ אלמנטים מתאימים משני אוספים:

IntStream .range (0, Math.min (names.size (), ages.size ())) .mapToObj (i -> names.get (i) + ":" + ages.get (i)) //. ..

3. שימוש בזרמי גויאבה

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

Streams .zip (names.stream (), ages.stream (), (name, age) -> name + ":" + age) // ...

4. שימוש jOOλ(jOOL)

צחוק מספק גם כמה מהתוספות המרתקות מעל Java 8 Lambda, ובתמיכה של Tuple1 ל Tuple16, פעולת ה- zip הופכת למעניינת הרבה יותר:

Seq .of ("John", "Jane", "Dennis") .zip (Seq.of (24,25,27));

זה יניב תוצאה של רצף מֵכִיל צינורות של אלמנטים מכווצים:

(tuple (1, "a"), tuple (2, "b"), tuple (3, "c"))

ה- zip של jOOL השיטה נותנת את הגמישות לספק פונקציית טרנספורמציה מותאמת אישית:

Seq .of (1, 2, 3). Zip (Seq.of ("a", "b", "c"), (x, y) -> x + ":" + y);

או אם מישהו מעוניין לרכוס באינדקס בלבד, הוא יכול ללכת עם ה- zipWithIndex השיטה המסופקת על ידי צחוק:

Seq.of ("a", "b", "c"). ZipWithIndex ();

5. מסקנה

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

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


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