java8利用Stream流,统计类中元素出现次数
时间: 2024-05-10 18:13:54 浏览: 6
好的,这是一个技术问题,我可以回答。在Java 8中,可以利用Stream流和Collectors类的toMap()方法来统计类中元素出现的次数。具体实现可以参考以下代码:
```java
List<String> list = Arrays.asList("apple", "banana", "apple", "orange", "banana", "papaya");
Map<String, Long> frequencyMap = list.stream()
.collect(Collectors.groupingBy(Function.identity(), Collectors.counting()));
```
上述代码中,我们首先定义一个字符串列表,然后使用Stream流的groupingBy()方法和counting()方法将列表中的元素分组,统计出每个元素出现的次数,最终将结果保存为一个Map对象。
相关问题
使用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流可以非常方便地实现统计数组中出现一次的元素。
java stream流统计元素之和
可以使用Java 8引入的Stream API来统计元素之和。假设我们有一个整数列表,可以按照以下方式计算它们的总和:
```java
List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);
int sum = numbers.stream().mapToInt(Integer::intValue).sum();
System.out.println(sum); // 输出 15
```
这里,我们首先将列表转换为流,然后使用 `mapToInt()` 方法将流中的每个元素转换为 `int` 类型,最后使用 `sum()` 方法计算它们的总和。