通过stream去重_java 8 stream、lambda表达式对list操作分组、过滤、求和、最值、排序、去重...
时间: 2023-09-19 17:06:16 浏览: 42
假设有一个List<Integer>,需要对它进行去重操作,可以使用Java 8的Stream API和lambda表达式来实现。
首先,使用distinct()方法对List进行去重:
```
List<Integer> numbers = Arrays.asList(1, 2, 3, 2, 4, 5, 3);
List<Integer> distinctNumbers = numbers.stream().distinct().collect(Collectors.toList());
System.out.println(distinctNumbers);
```
输出结果为:[1, 2, 3, 4, 5]
接下来,对List进行分组操作:
```
Map<Integer, List<Integer>> numberGroups = numbers.stream().collect(Collectors.groupingBy(i -> i % 2));
System.out.println(numberGroups);
```
输出结果为:{0=[2, 2, 4], 1=[1, 3, 5]}
然后,对List进行过滤操作:
```
List<Integer> evenNumbers = numbers.stream().filter(i -> i % 2 == 0).collect(Collectors.toList());
System.out.println(evenNumbers);
```
输出结果为:[2, 2, 4]
接着,对List进行求和操作:
```
int sum = numbers.stream().mapToInt(Integer::intValue).sum();
System.out.println(sum);
```
输出结果为:20
然后,对List进行最值操作:
```
Optional<Integer> max = numbers.stream().max(Integer::compareTo);
Optional<Integer> min = numbers.stream().min(Integer::compareTo);
System.out.println("Max: " + max.get() + ", Min: " + min.get());
```
输出结果为:Max: 5, Min: 1
最后,对List进行排序操作:
```
List<Integer> sortedNumbers = numbers.stream().sorted().collect(Collectors.toList());
System.out.println(sortedNumbers);
```
输出结果为:[1, 2, 2, 3, 3, 4, 5]