使用stream流统计数组中出现一次的元素
时间: 2024-04-21 15:05:39 浏览: 11
假设数组为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流可以非常方便地实现统计数组中出现一次的元素。
相关问题
java 使用stream流过滤数组的元素
可以使用 filter() 方法来过滤数组的元素,例如:
int[] arr = {1, 2, 3, 4, 5};
int[] filteredArr = Arrays.stream(arr)
.filter(num -> num % 2 == )
.toArray();
// 过滤出偶数,filteredArr = {2, 4}
注意:以上回答并不代表 CSDN 或 ChatGPT 的观点或立场。
写一个使用stream流把数组中的元素封装到list指定泛型的结合中
可以使用以下代码实现:
```java
int[] arr = {1, 2, 3, 4, 5};
List<Integer> list = Arrays.stream(arr).boxed().collect(Collectors.toList());
```
这段代码将整型数组 `arr` 中的元素封装到一个泛型为 `Integer` 的 `List` 集合中。使用 `Arrays.stream(arr)` 将数组转换为流,然后使用 `boxed()` 将流中的元素装箱为 `Integer` 类型,最后使用 `collect(Collectors.toList())` 将流中的元素收集到一个 `List` 集合中。