如何在 Java 中迭代字串字符
1. 概述
在本教程中,我們將熟悉迭代字串字元的方法及其時間和空間複雜度。
2. 迭代String
的常用方法
在 Java 中,有多種方法可以迭代字串的字符,每種方法都有自己的時間和空間複雜度。最佳使用方法取決於您的程式的特定要求。
2.1. for
迴圈
我們可以使用一個簡單的for
迴圈來迭代字串的字元。此方法的時間複雜度為 O(n),其中n
是字串str
的長度,空間複雜度為 O(1),因為它只需要一個循環變數:
String str = "Hello, Baeldung!";
for (int i = 0; i < str.length(); i++) {
char c = str.charAt(i);
System.out.print(c)
}
2.2. toCharArray()
toCharArray()
方法首先將字串轉換為字元數組,我們可以使用它來執行迭代。此方法的時間複雜度為 O(n),其中n
是字串str
的長度,空間複雜度為 O(n),因為它建立了一個新的 char 陣列:
String str = "Hello, Baeldung!";
for (char c : str.toCharArray()) {
System.out.print(c);
}
2.3. Java 8 流
我們可以使用Java 8 Streams來處理字串中的每個字元。此方法的時間複雜度為 O(n),空間複雜度取決於您在流上執行的中間操作:
String str = "Hello, Baeldung!";
str.chars().forEach(c -> {
System.out.print((char) c);
});
請注意,在上面的程式碼中,我們需要將變數c
類型轉換為char
,因為chars()
傳回一個IntStream.
2.4. CharacterIterator
我們利用CharacterIterator
方法的以下方法來迭代字串。
-
**current():**
取得目前字符 -
**next():**
向前移動一個位置
StringCharacterIterator
提供了CharacterIterator
的實作。此介面允許對字串進行雙向迭代。迭代器迭代有界的字元序列。 Iterators
維護一個目前字元索引,其有效範圍是從getBeginIndex()
到getEndIndex().
這裡,時間複雜度為 O(n),其中n
是字串str
的長度,空間複雜度為 O(1),因為它只需要一個 while 迴圈迭代器:
String str = "Hello, Baeldung!";
CharacterIterator it = new StringCharacterIterator(str);
while (it.current() != CharacterIterator.DONE) {
System.out.print(it.current());
it.next();
}
三、結論
最佳使用方法取決於我們的特定用例。在大多數情況下,簡單的for
迴圈或增強的for
迴圈是迭代字串中的字元的最直接、最有效的方法。它們的空間複雜度較低,時間複雜度為O(n)
,這是我們可以為此任務實現的最佳複雜度。
當我們需要對字元執行複雜的操作或想要利用它提供的函數式程式設計功能時,我們可以使用 Java 8 Streams。
與往常一樣,所有這些範例的原始程式碼都可以在 GitHub 上取得。