Java中的集合
Java LinkedList指南
Java ArrayList指南
Java中不可變的ArrayList
CopyOnWriteArrayList指南
JavaJava中的多維ArrayList
將迭代器轉換為列表
Java –從列表中獲取隨機項目/元素
用Java對列表進行分區
從Java列表中刪除所有Null
從Java中的列表中刪除所有重複項
檢查Java中兩個列表是否相等
如何使用Java在列表中查找元素
Java列表UnsupportedOperationException
將列表複製到Java中的另一個列表
從列表中刪除所有出現的特定值
將多個元素添加到Java ArrayList
從列表中刪除第一個元素
在Java中迭代列表的方法
Java中兩個列表的交集
如何計算Arraylist中的重複元素
查找Java中兩個列表之間的差異
將迭代器轉換為列表
1.概述
在這個簡短的教程中,我們將學習如何在Java中將Iterator
轉換為List
。我們將使用while循環,Java 8和一些通用庫介紹一些示例。
對於所有示例,我們將使用帶有Integer
的Iterator
:
Iterator<Integer> iterator = Arrays.asList(1, 2, 3).iterator();
2.使用While循環
讓我們從Java 8之前傳統上使用的方法開始。我們將使用**while
循環**將Iterator
轉換為List
:
List<Integer> actualList = new ArrayList<Integer>();
while (iterator.hasNext()) {
actualList.add(iterator.next());
}
assertThat(actualList, containsInAnyOrder(1, 2, 3));
3.使用Java 8 Iterator.forEachRemaining
在Java 8和更高版本中,我們可以使用Iterator
的forEachRemaining()
方法來構建List
。我們將傳遞List
接口的add()
方法作為方法參考:
List<Integer> actualList = new ArrayList<Integer>();
iterator.forEachRemaining(actualList::add);
assertThat(actualList, containsInAnyOrder(1, 2, 3));
4.使用Java 8 Streams API
接下來,我們將使用Java 8 Streams API將Iterator
轉換為List
。為了使用Stream
API,我們需要首先將Iterator
轉換為Iterable
。我們可以使用Java 8 Lambda表達式來做到這一點:
Iterable<Integer> iterable = () -> iterator;
現在,我們可以使用StreamSupport
類的stream()
和collect()
方法來構建List
:
List<Integer> actualList = StreamSupport
.stream(iterable.spliterator(), false)
.collect(Collectors.toList());
assertThat(actualList, containsInAnyOrder(1, 2, 3));
5.使用番石榴
Google的Guava庫**提供了創建可變和不可變List
的選項,
**因此我們將介紹這兩種方法。
首先,使用ImmutableList.copyOf()
方法創建一個不可變List
:
List<Integer> actualList = ImmutableList.copyOf(iterator);
assertThat(actualList, containsInAnyOrder(1, 2, 3));
現在,讓我們使用Lists.newArrayList()
方法創建一個可變List
:
List<Integer> actualList = Lists.newArrayList(iterator);
assertThat(actualList, containsInAnyOrder(1, 2, 3));
6.使用Apache Commons
**Apache Commons Collections庫提供了用於List.
選項List.
**我們將使用IteratorUtils
進行轉換:
List<Integer> actualList = IteratorUtils.toList(iterator);
assertThat(actualList, containsInAnyOrder(1, 2, 3));
7.結論
在本文中,我們介紹了一些將Iterator
轉換為List
選項。儘管還有其他幾種方法可以實現此目的,但我們介紹了幾種常用的選項。
所有這些示例和代碼段的實現都可以在GitHub上找到。