Collectors.groupingBy 值为List
时间: 2023-07-06 12:43:54 浏览: 53
`Collectors.groupingBy` 是 Java 8 中的一个流操作,它可以根据指定的条件将流中的元素按照不同的分类进行分组。如果想要将分组后的结果以列表的形式返回,可以使用 `Collectors.toList()` 方法。
示例如下:
```java
List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);
Map<Boolean, List<Integer>> oddEvenMap = numbers.stream()
.collect(Collectors.groupingBy(num -> num % 2 == 0));
List<Integer> evenNumbers = oddEvenMap.get(true);
List<Integer> oddNumbers = oddEvenMap.get(false);
```
在上面的示例中,我们将一个包含 1 到 10 的整数列表按照奇偶数进行分组,并将分组后的结果以列表的形式返回。最终的结果是一个 `Map`,其中键为 `true` 表示偶数,键为 `false` 表示奇数,对应的值为相应的整数列表。
相关问题
Collectors.groupingBy后转化为list
Collectors.groupingBy是Java 8中的一个收集器(Collector),它用于根据指定的分类函数对元素进行分组。在分组完成后,可以通过调用Collectors.toList()方法将每个分组的结果转化为一个List。
下面是将Collectors.groupingBy后的结果转化为List的示例代码:
```java
import java.util.*;
import java.util.stream.Collectors;
public class Main {
public static void main(String[] args) {
List<String> fruits = Arrays.asList("apple", "banana", "orange", "apple", "banana");
Map<String, List<String>> groupedFruits = fruits.stream()
.collect(Collectors.groupingBy(fruit -> fruit));
List<List<String>> groupedFruitsList = new ArrayList<>(groupedFruits.values());
System.out.println(groupedFruitsList);
}
}
```
在上述代码中,我们首先创建了一个包含水果名称的List。然后,使用stream()方法将List转化为流,接着使用Collectors.groupingBy()方法对水果进行分组,以水果名称作为分组依据。最后,通过调用values()方法获取分组后的结果,并将其转化为一个List。
输出结果为:[[apple, apple], [banana, banana], [orange]]
Collectors.groupingBy mapping 去重 list
您可以使用Java 8中的Collectors.groupingBy方法结合mapping函数来去重一个列表。这个方法可以将列表中的元素按照指定的条件进行分组,并且可以对每个分组进行进一步的操作。在这种情况下,您可以使用mapping函数来指定去重的条件。
下面是一个示例代码,展示了如何使用Collectors.groupingBy和mapping函数来去重一个列表:
```java
import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
public class Main {
public static void main(String[] args) {
List<String> list = Arrays.asList("apple", "banana", "apple", "orange", "banana");
Map<String, List<String>> distinctMap = list.stream()
.collect(Collectors.groupingBy(s -> s, Collectors.mapping(s -> s, Collectors.toList())));
List<String> distinctList = distinctMap.keySet().stream().collect(Collectors.toList());
System.out.println(distinctList);
}
}
```
在这个示例中,我们有一个包含重复元素的列表。我们使用stream()方法将列表转换为流,并使用Collectors.groupingBy方法将元素按照它们自身的值进行分组。然后,我们使用Collectors.mapping函数来指定每个分组的操作,这里我们只是将元素本身映射为它们自身的值。最后,我们使用Collectors.toList方法将每个分组的结果收集到一个列表中。
运行这段代码,输出将会是一个去重后的列表:[apple, banana, orange]。这是因为我们使用Collectors.groupingBy方法按照元素的值进行分组,并且使用Collectors.mapping函数将元素映射为它们自身的值,最终得到了一个去重后的列表。
希望这个示例能够帮助您理解如何使用Collectors.groupingBy和mapping函数去重一个列表。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)