Define a method that takes an array as input and return an iterator to traverse the elements.
Signature
public static <T> Iterator<T> getIterator(T[] array)
Find the below working application.
ArrayIterator.java
package com.sample.app.iterators;
import java.util.Iterator;
import java.util.NoSuchElementException;
public class ArrayIterator<T> implements Iterator<T>, Iterable<T> {
private final T[] array;
private int currentIndex;
private final int length;
public ArrayIterator(T[] array) {
if (array == null) {
throw new IllegalArgumentException("Array can't be null to get an interator");
}
this.array = array;
currentIndex = 0;
length = array.length;
}
@Override
public boolean hasNext() {
return currentIndex < length;
}
@Override
public T next() {
if (currentIndex >= length) {
throw new NoSuchElementException();
}
return array[currentIndex++];
}
@Override
public void remove() {
throw new UnsupportedOperationException();
}
@Override
public Iterator<T> iterator() {
return this;
}
}
ArrayIteratorDemo.java
package com.sample.app.arrays;
import java.util.Iterator;
import com.sample.app.iterators.ArrayIterator;
public class ArrayIteratorDemo {
public static <T> Iterator<T> getIterator(T[] array) {
return new ArrayIterator<T>(array);
}
public static void main(String[] args) {
ArrayIterator<Integer> iterator = (ArrayIterator)getIterator(new Integer[] { 2, 3, 5, 7, 11 });
for(Integer ele: iterator) {
System.out.println(ele);
}
}
}
Output
2 3 5 7 11
You may like
Generic method to concatenate two arrays in Java
Get the string representation of array by given delimiter in Java
Quick guide to assertions in Java
No comments:
Post a Comment