A quick guide to convert an array to iterable in java using Stream api with examples programs in two ways.
Read More: 1Z0-808: Java SE 8 Programmer I
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.oraclejavacertified.arrays.toiterabale;
/**
*
* Array Iterate example using loops
*
*/
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.oraclejavacertified.arrays.toiterabale;
import java.util.Arrays;
import java.util.Iterator;
import java.util.List;
/**
*
* Example to convert Java Array to Iterable before Java 8
*
*/
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()
*
*/
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
Source: javacodegeeks.com
0 comments:
Post a Comment