java 使用stream流过滤数组的元素
时间: 2023-03-28 18:03:17 浏览: 103
可以使用 filter() 方法来过滤数组的元素,例如:
int[] arr = {1, 2, 3, 4, 5};
int[] filteredArr = Arrays.stream(arr)
.filter(num -> num % 2 == )
.toArray();
// 过滤出偶数,filteredArr = {2, 4}
注意:以上回答并不代表 CSDN 或 ChatGPT 的观点或立场。
相关问题
java数组stream流的使用
Java数组流(Array Stream)是Java 8引入的一种新特性,它提供了一种便捷的方式来处理数组数据。通过使用数组流,我们可以对数组进行各种操作,如过滤、映射、排序等。
要使用数组流,首先需要将数组转换为流。可以使用Arrays类的stream()方法来实现这一转换。例如,假设我们有一个整型数组arr,可以使用以下代码将其转换为流:
```
int[] arr = {1, 2, 3, 4, 5};
IntStream stream = Arrays.stream(arr);
```
接下来,我们可以对数组流进行各种操作。以下是一些常用的数组流操作:
1. 过滤(Filter):使用filter()方法可以根据指定的条件过滤数组中的元素。例如,我们可以过滤出所有大于3的元素:
```
IntStream filteredStream = stream.filter(num -> num > 3);
```
2. 映射(Map):使用map()方法可以对数组中的每个元素进行映射操作。例如,我们可以将数组中的每个元素都乘以2 ```
IntStream mappedStream = stream.map(num -> num * 2);
```
3. 排序(Sort):使用sorted()方法可以对数组中的元素进行排序。例如,我们可以按照升序对数组进行排序:
```
IntStream sortedStream = stream.sorted();
```
4. 统计(Statistics):使用summaryStatistics()方法可以获取数组中元素的统计信息,如最大值、最小值、平均值等。例如,我们可以获取数组中元素的总和:
```
IntSummaryStatistics statistics = stream.summaryStatistics();
int sum = statistics.getSum();
```
这些只是数组流的一些基本用法,还有很多其他操作可以进行。你可以根据具体需求来选择适合的操作。
使用stream流统计数组中出现一次的元素
假设数组为arr,可以使用Java 8的stream流来实现统计数组中出现一次的元素:
```java
Map<Integer, Long> counts = Arrays.stream(arr)
.boxed()
.collect(Collectors.groupingBy(Function.identity(), Collectors.counting()));
List<Integer> result = counts.entrySet().stream()
.filter(entry -> entry.getValue() == 1)
.map(Map.Entry::getKey)
.collect(Collectors.toList());
```
首先,将int数组转换为Integer流,然后使用groupingBy函数按照元素值进行分组,得到一个Map,其中key为元素值,value为该元素值出现的次数。
接着,使用entrySet()方法将Map转换为Set<Map.Entry<Integer, Long>>流,然后使用filter函数过滤出出现次数为1的元素,最后使用map函数将其转换为Integer流,并使用toList()方法将结果转换为List<Integer>类型。
可以看到,使用stream流可以非常方便地实现统计数组中出现一次的元素。