java中lambda遍历list集合(集合中是对象)并去重并统计数量
时间: 2023-07-16 18:15:04 浏览: 113
可以使用Java 8中的Stream API和Lambda表达式来实现。
假设有一个名为`list`的`List`集合,其中包含多个对象,每个对象有一个名为`name`的属性,可以按照以下方式进行去重并统计数量:
```java
Map<String, Long> result = list.stream()
.map(obj -> obj.getName()) // 取出每个对象的name属性
.distinct() // 去重
.collect(Collectors.groupingBy(name -> name, Collectors.counting())); // 统计数量
System.out.println(result);
```
解释一下上述代码:
- `list.stream()`将`List`转换为`Stream`对象。
- `map()`方法将每个对象映射为其`name`属性。
- `distinct()`方法去除重复的`name`。
- `collect()`方法将结果收集到一个`Map`中,其中键为`name`,值为该`name`在原列表中出现的次数。
最后,打印输出`result`即可。
相关问题
java中lambda遍历list集合(集合中是对象)去重并统计数量,只返回去重的数量
可以使用Java 8中的Stream API来实现。假设我们有一个名为list的List对象,它包含了一些自定义的对象,我们需要去重并统计数量。可以按照以下步骤进行操作:
1. 使用stream()方法将List转化为Stream对象。
2. 使用map()方法将Stream中的对象映射成某一个属性值(例如,对象的id属性)。
3. 使用distinct()方法去重。
4. 使用count()方法统计数量。
5. 返回去重后的数量。
代码如下所示:
```
long count = list.stream()
.map(obj -> obj.getId())
.distinct()
.count();
```
其中,obj.getId()代表获取对象的id属性值,你需要替换成你自己的属性值。
这段代码将返回去重后的数量。
阅读全文