המרת איטרביל לאוסף בג'אווה
1. סקירה כללית
במדריך זה, נבדוק דרכים שונות להמיר ניתן לנידון אל א אוסף בג'אווה.
נתחיל בפתרונות Java פשוטים, ואז נסתכל על האפשרויות שמציעות גם ספריות Guava ו- Apache Commons.
2. ניתן לנידון ו איטרטור
ראשית, נגדיר את שלנו ניתן לנידון:
Iterable iterable = Arrays.asList ("ג'ון", "טום", "ג'יין");
נגדיר גם פשוט איטרטור - כדי להדגיש את ההבדל בין המרה ניתן לנידון ל אוסף ו איטרטור ל אוסף:
איטרטור איטרטור = iterable.iterator ();
3. שימוש ב- Java רגיל
3.1. ניתן לנידון ל אוסף
אנחנו יכולים השתמש ב- Java 8 לכל אחד() שיטה להוסיף את כל האלמנטים ל רשימה:
@Test ציבורי בטל כאשרConvertIterableToListUsingJava8_thenSuccess () {List result = new ArrayList (); iterable.forEach (תוצאה :: הוסף); assertThat (תוצאה מכילה ("ג'ון", "טום", "ג'יין")); }
אוֹ להשתמש ב ספליטור בכיתה להמיר את שלנו ניתן לנידון ל זרם ואז ל אוסף:
תוצאת רשימה = StreamSupport.stream (iterable.spliterator (), false) .collect (Collectors.toList ());
3.2. איטרטור ל אוסף
מצד שני, במקום להשתמש לכל אחד(), נשתמש forEachRemaining () עם איטרטור:
@ מבחן ציבורי בטל כאשר ConvertIteratorToListUsingJava8_thenSuccess () {List result = new ArrayList (); iterator.forEachRemaining (תוצאה :: הוסף); assertThat (התוצאה מכילה ("ג'ון", "טום", "ג'יין")); }
אנחנו יכולים גם ליצור ספליטור משלנו איטרטור ואז השתמש בו כדי להמיר איטרטור ל זרם:
תוצאת רשימה = StreamSupport.stream (Spliterators.spliteratorUnknownSize (iterator, Spliterator.ORDERED), false) .collect (Collectors.toList ());
3.3. שימוש ב- For-Loop
בואו נסתכל גם על פיתרון שמשתמש בהמרה פשוטה מאוד עבור לולאה ניתן לנידון אל א רשימה:
@Test הציבור בטל כאשר ConvertIterableToListUsingJava_thenSuccess () {List result = new ArrayList (); עבור (String str: iterable) {result.add (str); } assertThat (תוצאה, מכיל ("ג'ון", "טום", "ג'יין")); }
מצד שני, נשתמש hasNext () ו הַבָּא() עם ה איטרטור:
@Test הציבור בטל כאשר ConvertIteratorToListUsingJava_thenSuccess () {List result = new ArrayList (); בעוד (iterator.hasNext ()) {result.add (iterator.next ()); } assertThat (תוצאה, מכיל ("ג'ון", "טום", "ג'יין")); }
4. שימוש בגויאבה
ישנן גם כמה ספריות המספקות שיטות נוחות שיעזרו לנו להשיג זאת.
בואו נראה כיצד נוכל להשתמש בגויאבה להמרה מ- ניתן לנידון אל א רשימה:
אנחנו יכולים ליצור חדש רשימה מ ניתן לנידון אוֹ איטרטור באמצעות Lists.newArrayList ():
תוצאת רשימה = Lists.newArrayList (ניתן לשחזור);
או שאנחנו יכולים להשתמש ImmutableList.copyOf ():
תוצאת רשימה = ImmutableList.copyOf (iterable);
5. שימוש באפצ'י קומונס
סוף כל סוף, נשתמש באפצ'י קומונס IterableUtils ליצור רשימה מ ניתן לנידון:
תוצאת רשימה = IterableUtils.toList (iterable);
באופן דומה, נשתמש IteratorUtils ליצור רשימה משלנו איטרטור:
תוצאת רשימה = IteratorUtils.toList (iterator);
6. מסקנה
במאמר קצר זה למדנו כיצד להמיר ניתן לנידון ו איטרטור אל א אוסף באמצעות Java. בדקנו דרכים שונות באמצעות Java רגיל, ובשתי ספריות חיצוניות: גויאבה ואפאצ'י קומונס.
כמו תמיד, קוד המקור המלא זמין ב- GitHub.