给定一个迭代器,任务是将其转换为 Java 中的 List。
例子:
Input: Iterator = {1, 2, 3, 4, 5} Output: {1, 2, 3, 4, 5} Input: Iterator = {'G', 'e', 'e', 'k', 's'} Output: {'G', 'e', 'e', 'k', 's'}
以下是执行此操作的各种方法:
- 天真的方法:
- 获取迭代器。
- 创建一个空列表。
- 使用 forEachRemaining() 方法将迭代器的每个元素添加到列表中。
- 返回列表。
下面是上述方法的实现:
// Java program to get a List // from a given Iterator import java.util.*; class GFG { // Function to get the List public static <T> List<T> getListFromIterator(Iterator<T> iterator) { // Create an empty list List<T> list = new ArrayList<>(); // Add each element of iterator to the List iterator.forEachRemaining(list::add); // Return the List return list; } // Driver code public static void main(String[] args) { // Get the Iterator Iterator<Integer> iterator = Arrays.asList(1, 2, 3, 4, 5) .iterator(); // Get the List from the Iterator List<Integer> list = getListFromIterator(iterator); // Print the list System.out.println(list); } }
输出:[1, 2, 3, 4, 5]
- 使用 Iterable 作为中间:
- 获取迭代器。
- 使用 lambda 表达式将迭代器转换为可迭代。
- 使用 Stream 将可迭代对象转换为列表。
- 返回列表。
下面是上述方法的实现:
// Java program to get a List // from a given Iterator import java.util.*; import java.util.stream.Collectors; import java.util.stream.StreamSupport; class GFG { // Function to get the List public static <T> List<T> getListFromIterator(Iterator<T> iterator) { // Convert iterator to iterable Iterable<T> iterable = () -> iterator; // Create a List from the Iterable List<T> list = StreamSupport .stream(iterable.spliterator(), false) .collect(Collectors.toList()); // Return the List return list; } // Driver code public static void main(String[] args) { // Get the Iterator Iterator<Integer> iterator = Arrays.asList(1, 2, 3, 4, 5) .iterator(); // Get the List from the Iterator List<Integer> list = getListFromIterator(iterator); // Print the list System.out.println(list); } }
输出:[1, 2, 3, 4, 5]
相关用法
- Java Iterator转Stream用法及代码示例
- Java Iterator转Spliterator用法及代码示例
- Java Iterator转Iterable用法及代码示例
- Java TreeSet iterator()用法及代码示例
- Java LinkedBlockingDeque iterator()用法及代码示例
- Java IntStream iterator()用法及代码示例
- Java AbstractSequentialList iterator()用法及代码示例
- Java DoubleStream iterator()用法及代码示例
- Java LongStream iterator()用法及代码示例
- Java HashSet iterator()用法及代码示例
- Java PriorityQueue iterator()用法及代码示例
- Java LinkedBlockingQueue iterator()用法及代码示例
- Java ArrayDeque iterator()用法及代码示例
- Java ArrayBlockingQueue iterator()用法及代码示例
- Java PriorityBlockingQueue iterator()用法及代码示例
- Java LinkedTransferQueue iterator()用法及代码示例
- Java ConcurrentSkipListSet iterator()用法及代码示例
- Java Deque iterator()用法及代码示例
注:本文由纯净天空筛选整理自RishabhPrabhu大神的英文原创作品 Convert an Iterator to a List in Java。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。