將 Java 數組轉換為可迭代數組
一、簡介
數組是基本數據結構,它提供了一種在連續的內存塊中存儲相同類型的多個元素的方法。然而,它們有一定的局限性,例如固定的大小以及缺乏方便的操作和遍歷方法。
在本教程中,我們將深入研究將 Java 數組轉換為Iterable
數據結構的過程,並解鎖各種可以極大簡化和增強數據操作的內置功能。
將 Java 數組轉換為Iterable
結構對於獲得高級功能、提高代碼可讀性、可維護性和可重用性至關重要。
2.使用Stream collect()
Stream API 提供了在 Java 中將int[]
數組轉換為Iterable
最便捷方法。 IntStream
接口提供了一組專門為處理原始整數流而設計的方法。讓我們用它來實現我們的目標:
int[] array = new int[] {1, 2, 3};
List<Integer> integers = Arrays.stream(array)
.boxed()
.collect(Collectors.toList())
在上面的代碼中,我們使用Arrays.stream()
創建一個IntStream
,
使用boxed(),
將每個原始int
元素包裝為Integer
,最後使用collect().
將其包裝為List<Integer>
。這個List
可以很容易地用作Iterable.
它允許我們使用增強的for
循環或與Iterable
兼容的任何其他方法來迭代其元素.
3.使用Stream API iterator()
將int[]
數組轉換為Iterable
另一種方法是使用 Stream API 的iterator()
方法。它允許我們直接從流中獲取迭代器,為轉換過程提供了另一個方便的選擇。通過將其與 lambda 表達式或匿名類相結合,我們可以創建自己的Iterable
實現。
以下是使用 lambda 表達式創建Iterable<Integer>
的示例:
Iterable<Integer> convertWithStreamIterator(int[] array) {
return () -> Arrays.stream(array).iterator();
}
或者,我們可以使用匿名類獲得相同的結果:
Iterable<Integer> convertWithStreamIterator(int[] array) {
return new Iterable<Integer>() {
@Override
public Iterator<Integer> iterator() {
return Arrays.stream(array).iterator();
}
};
}
4. 使用 Apache Commons Lang ArrayUtils
Apache Commons Lang 庫提供了一組豐富的實用程序類,可以簡化常見的編程任務。
讓我們在pom.xml
文件中添加Maven 依賴項:
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.12.0</version>
</dependency>
現在我們可以在代碼中使用ArrayUtils
:
int [] array = new int [] {1, 2, 3};
List<Integer> integers = Arrays.asList(ArrayUtils.toObject(array));
這裡,我們使用A rrayUtils.toObject()
方法將int[]
數組轉換為Integer[]
數組。然後,我們將Integer[]
數組傳遞給Arrays.asList()
方法並獲得一個List<Integer>
,它是一個Iterable
集合。
5. 使用番石榴
Google 的 Guava 庫為 Java 開發人員提供了許多有用的實用程序。 Ints.asList()
方法可用於將int[]
數組轉換為List<Integer>
,後者用作Iterable.
讓我們在pom.xml
文件中添加Maven 依賴項:
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>32.0.1-jre</version>
</dependency>
現在我們可以使用Ints.asList()
在代碼中:
int[] array = {1, 2, 3};
List<Integer> integers = Ints.asList(array);
六,結論
在本文中,我們探討了將 Java 數組轉換為Iterable
集合的幾種方法。我們討論了每種方法提供的便利性和靈活性,使開發人員能夠選擇最適合他們需求的方法。
Stream API 提供了collect()
和iterator()
方法,使用流將數組轉換為Iterable
。 Apache Commons Lang 中的 Apache ArrayUtils
將int[]
轉換為Integer[]
,然後轉換為List<Integer>
。 Guava 的Ints.asList()
直接將數組轉換為List<Integer>
。
通過探索和理解這些不同的方法,我們可以自信地選擇符合我們的編碼風格、項目要求和總體目標的最合適的方法。
與往常一樣,示例的源代碼可在 GitHub 上獲取。