המרת איטרביל לאוסף בג'אווה

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.


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