stream 中 for each 用法
时间: 2024-03-15 20:44:18 浏览: 15
对于C++中的流(stream),可以使用标准库中的算法库(algorithm)来实现类似 for each 的功能。具体实现方式如下:
```cpp
#include <iostream>
#include <algorithm>
#include <vector>
int main()
{
std::vector<int> vec = {1, 2, 3, 4, 5};
std::for_each(vec.begin(), vec.end(), [](int n){
std::cout << n << " ";
});
return 0;
}
```
上述代码中,`std::for_each` 算法函数接受三个参数:待遍历的起始迭代器、待遍历的终止迭代器和一个函数对象。函数对象可以是一个函数指针、一个函数对象(即类的实例)或者一个 lambda 表达式。
在上述代码中,我们使用 lambda 表达式作为函数对象,打印出了 vector 中的每个元素。输出结果为:1 2 3 4 5。
需要注意的是,流对象(如 std::cout)并不是一个迭代器,因此不能使用 for each 直接遍历流中的元素。如果需要遍历流中的元素,您可以先将流中的内容读入到容器中,再使用 for each 遍历容器中的元素。
相关问题
jdk 1.8 stream 中 for each 用法
在 Java 8 中,可以使用 Stream API 来实现类似于 C++ 中的 for each 的功能。
Stream API 是 Java 8 中新添加的一个功能,它可以更加方便地对集合、数组等进行操作。下面是一个使用 Stream API 实现 for each 的示例:
```java
import java.util.Arrays;
public class Main {
public static void main(String[] args) {
int[] arr = {1, 2, 3, 4, 5};
Arrays.stream(arr).forEach(n -> System.out.print(n + " "));
}
}
```
在上述代码中,我们使用 `Arrays.stream(arr)` 方法将数组转换为一个 IntStream 对象,然后使用 `forEach` 方法遍历该对象中的每个元素,并输出到控制台中。
需要注意的是,Stream API 中的 `forEach` 方法并不是在集合上直接进行遍历的,而是将遍历操作交给了 Stream 流处理。这样可以更好地利用多核处理器和并行处理,提高程序的性能。
java 代码使用stream创建list
使用Java 8引入的Stream API,可以很方便地创建List。下面是使用Stream API创建List的示例代码:
```java
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
public class Example {
public static void main(String[] args) {
// 使用Stream API创建List
List<String> list = Arrays.stream(new String[]{"apple", "banana", "orange"})
.collect(Collectors.toList());
// 使用for-each循环遍历List
for (String fruit : list) {
System.out.println(fruit);
}
}
}
```
在这个示例中,我们使用Stream API创建了一个字符串数组,并使用 `Arrays.stream()` 方法将其转换为Stream。然后使用 `collect()` 方法将Stream转换为List。
如果你需要根据条件过滤数据,可以使用 `filter()` 方法。例如:
```java
List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);
List<Integer> evenNumbers = numbers.stream()
.filter(n -> n % 2 == 0)
.collect(Collectors.toList());
```
在这个示例中,我们使用Stream API创建一个整数列表,然后使用 `filter()` 方法过滤出所有的偶数,并将结果收集到另一个整数列表中。
使用Stream API创建List可以使代码更加简洁和易于维护,因为它允许你使用各种方法来处理数据。