Java iterator遍历字符串并删除指定字符
时间: 2023-09-06 18:07:12 浏览: 56
Java中的字符串是不可变的,因此不能直接删除字符。但是可以使用StringBuilder类来创建一个可变的字符串,然后使用它的deleteCharAt()方法来删除字符。
以下是使用Java迭代器遍历字符串并删除指定字符的示例代码:
```java
String str = "Hello World";
char ch = 'o';
StringBuilder sb = new StringBuilder(str);
for (Iterator<Character> it = sb.iterator(); it.hasNext();) {
char c = it.next();
if (c == ch) {
it.remove();
}
}
String result = sb.toString();
System.out.println(result); // "Hell Wrld"
```
这个示例中,我们首先创建一个字符串`"Hello World"`和一个要删除的字符`'o'`。然后使用StringBuilder类创建一个可变的字符串,并将原始字符串传递给它的构造函数。接下来,我们使用迭代器遍历可变字符串中的每个字符。如果当前字符等于要删除的字符,我们使用迭代器的remove()方法将其删除。最后,我们将结果转换回普通字符串并打印它。
相关问题
Java遍历字符串
在Java中,可以使用以下几种方式遍历字符串:
1. for循环
使用for循环遍历字符串,可以使用String.charAt()方法获取字符串指定位置的字符。例如:
```
String str = "Hello World!";
for (int i = 0; i < str.length(); i++) {
char c = str.charAt(i);
System.out.print(c + " ");
}
```
输出:
```
H e l l o W o r l d !
```
2. 增强for循环
使用增强for循环遍历字符串,可以直接遍历字符串中的每个字符。例如:
```
String str = "Hello World!";
for (char c : str.toCharArray()) {
System.out.print(c + " ");
}
```
输出:
```
H e l l o W o r l d !
```
3. 迭代器
使用迭代器遍历字符串,可以使用String.chars()方法获取一个IntStream流,再使用IntStream.mapToObj()方法将每个字符转换成Character对象,最后使用迭代器遍历Character对象。例如:
```
String str = "Hello World!";
Iterator<Character> iterator = str.chars()
.mapToObj(c -> (char) c)
.iterator();
while (iterator.hasNext()) {
char c = iterator.next();
System.out.print(c + " ");
}
```
输出:
```
H e l l o W o r l d !
```
以上是几种常用的遍历字符串的方式,需要根据实际情况选择合适的方式。
list集合使用iterator遍历修改数据
可以使用iterator的set方法来修改集合中的数据。以下是一个示例代码:
```java
List<String> list = new ArrayList<>();
list.add("apple");
list.add("banana");
list.add("orange");
Iterator<String> iterator = list.iterator();
while (iterator.hasNext()) {
String fruit = iterator.next();
if (fruit.equals("banana")) {
iterator.set("grape");
}
}
System.out.println(list); // 输出 [apple, grape, orange]
```
在这个示例中,我们创建了一个字符串类型的List集合,并向其中添加了三个元素。然后我们使用iterator遍历集合,当遍历到"banana"时,使用iterator的set方法将其修改为"grape"。最后再次输出集合,可以看到"banana"已被修改为"grape"。