1. Overview
In this tutorial, We will learn how to convert java array to iterable in different ways with example programs.
First we will go thorough the basic one how to iterate over the array values. Next, how to convert the array to Iterable using legacy java api and finally using java 8 api for java array iterator.
Bonus section on how to convert string to iterable with a delimiter.
2. Create a iterator over the array using loops
Running a for loop over a array to create iterable logic to get the each value from array based on the index.
package com.javaprogramto.arrays.toiterabale; /** * * Array Iterate example using loops * * @author javaprogramto.com * */ public class ArrayIterate { public static void main(String[] args) { // string array String[] names = new String[] {"john", "Amal", "Paul"}; // iterating array over its values. for(int index=0; index< names.length ; index++) { System.out.println(names[index]); } } }
Output:
john Amal Paul
3. Convert Java Array to Iterable using legacy java before JDK 8
First we will convert the array to list using Arrays.asList() method. Next, convert list to Iterable in java using list.iterator() method.
Finally, iterate the iterator over the while loop to get the all the values.
Array to Iterable Example:
package com.javaprogramto.arrays.toiterabale; import java.util.Arrays; import java.util.Iterator; import java.util.List; /** * * Example to convert Java Array to Iterable before Java 8 * * @author javaprogramto.com * */ public class JavaArrayToIterableExample { public static void main(String[] args) { // string array String[] names = new String[] {"john", "Amal", "Paul"}; // string array to list conversion List<String> namesList = Arrays.asList(names); // List to iterable Iterator<String> it = namesList.iterator(); // printing each value from iterator. while(it.hasNext()) { System.out.println(it.next()); } } }
Output:
john Amal Paul
4. Convert Java Array to Iterable Using Java 8 Stream
In the above section, we called Arrays.asList() method to convert the array to List. But, now will use another method from java 8 stream api Arrays.stream(array) method which takes input array and returns a Stream of array type.
Arrays.stream() method provides the arrays to access the stream api and use the power of parallel execution on larger arrays.
But for now, after getting the Stream<String> object then you need to call the iterator() method on stream to convert Stream to iterable.
Do not worry, if you are new to the java 8, the below program is break down into multiple steps. And also provided a single line solution.
import java.util.Arrays; import java.util.Iterator; import java.util.stream.Stream; /** * * Example to convert Java Array to Iterable using Java 8 Arrays.stream() * * @author javaprogramto.com * */ public class JavaArrayToIterableExampleJava8 { public static void main(String[] args) { // string array String[] names = new String[] {"john", "Amal", "Paul"}; System.out.println("Multi line solution"); // Convert string array to Stream<String> Stream<String> namesList = Arrays.stream(names); // Stream to iterable Iterator<String> it = namesList.iterator(); // printing each value from iterator. while(it.hasNext()) { System.out.println(it.next()); } // singel line System.out.println("\nIn single line"); Arrays.stream(names).iterator().forEachRemaining(name -> System.out.println(name)); } }
Multiline and single line solutions provide the same output. If you are going to use in the realtime project then use it as single line statement as you want to fell like expert and take the advantage of stream power.
Multi line solution john Amal Paul In single line john Amal Paul
5. Bonus - Convert String to Iterable
Applying iterable on string is quite simple if you have understood the above code correctly. What we need is now to convert the String to String array with space or if the string has any delimiter.
After getting the string array then apply the same logic as java 8 streams as below.
public class JavaStringToIterableExampleJava9 { public static void main(String[] args) { // string String numbers = "1 2 3 4 5 6"; // string to string array String[] numbersArray = numbers.split(" "); System.out.println("Multi line solution"); // Convert string array to Stream<String> Stream<String> numbersList = Arrays.stream(numbersArray); // Stream to iterable Iterator<String> it = numbersList.iterator(); // printing each value from iterator. while(it.hasNext()) { System.out.println(it.next()); } // singel line System.out.println("\nIn single line"); Arrays.stream(numbersArray).iterator().forEachRemaining(name -> System.out.println(name)); } }
Output:
Multi line solution 1 2 3 4 5 6 In single line 1 2 3 4 5 6
6. Conclusion
In this article, you've seen how to convert the Array to iterable and get the each value from iterator using legacy and new java 8 api.
And also how to convert String to Iterable in java?
No comments:
Post a Comment
Please do not add any spam links in the comments section.