Approach 1: By traversing through the iterator.
private static <T> List<T> getList_approach1(Iterator<T> iterator) {
if (iterator == null) {
return Collections.EMPTY_LIST;
}
List<T> list = new ArrayList<>();
while (iterator.hasNext()) {
list.add(iterator.next());
}
return list;
}
Approach 2: Using iterator.forEachRemaining method.
private static <T> List<T> getList_approach2(Iterator<T> iterator) {
if (iterator == null) {
return Collections.EMPTY_LIST;
}
List<T> list = new ArrayList<>();
iterator.forEachRemaining(list::add);
return list;
}
Approach 3: Using Streams.
private static <T> List<T> getList_approach3(Iterator<T> iterator) {
if (iterator == null) {
return Collections.EMPTY_LIST;
}
return StreamSupport.stream(Spliterators.spliteratorUnknownSize(iterator, Spliterator.ORDERED), false)
.collect(Collectors.toCollection(ArrayList::new));
}
Find the below working application.
package com.sample.app;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.Iterator;
import java.util.List;
import java.util.Spliterator;
import java.util.Spliterators;
import java.util.stream.Collectors;
import java.util.stream.StreamSupport;
public class App {
private static <T> List<T> getList_approach1(Iterator<T> iterator) {
if (iterator == null) {
return Collections.EMPTY_LIST;
}
List<T> list = new ArrayList<>();
while (iterator.hasNext()) {
list.add(iterator.next());
}
return list;
}
private static <T> List<T> getList_approach2(Iterator<T> iterator) {
if (iterator == null) {
return Collections.EMPTY_LIST;
}
List<T> list = new ArrayList<>();
iterator.forEachRemaining(list::add);
return list;
}
private static <T> List<T> getList_approach3(Iterator<T> iterator) {
if (iterator == null) {
return Collections.EMPTY_LIST;
}
return StreamSupport.stream(Spliterators.spliteratorUnknownSize(iterator, Spliterator.ORDERED), false)
.collect(Collectors.toCollection(ArrayList::new));
}
private static <T> void printList(List<T> list) {
for (T obj : list) {
System.out.print(obj + " ");
}
System.out.println("\n");
}
public static void main(String[] args) {
List<Integer> list = Arrays.asList(2, 3, 5, 7);
List<Integer> list1 = getList_approach1(list.iterator());
List<Integer> list2 = getList_approach2(list.iterator());
List<Integer> list3 = getList_approach2(list.iterator());
printList(list1);
printList(list2);
printList(list3);
}
}
Output
2 3 5 7
2 3 5 7
2 3 5 7
You may
like
No comments:
Post a Comment