java循环一个bean bean中有一个字段叫mkbm mkbm相同的会相邻,统计数量给第一个mkbm 添加一个字段sl为相邻的mkbm数量,其他相同的mkbm配置为null
时间: 2024-11-05 19:23:53 浏览: 24
在Java中,如果你需要遍历一个集合(如List)中的Bean对象,并基于某个字段(例如mkbm)对它们进行分组并计算每个组内的元素数量,你可以使用`Stream API`配合`Collectors.groupingBy`来实现这个功能。假设你的Bean类叫做MyBean,首先创建一个新的方法来处理这个问题:
```java
import java.util.*;
import java.util.stream.Collectors;
public class MyBean {
private String mkbm;
// 其他字段...
private Integer sl; // 需要添加的新字段
// getters and setters...
public static void countAdjacentMkbms(List<MyBean> beans) {
Map<String, List<MyBean>> groupedBeans = beans.stream()
.collect(Collectors.groupingBy(MyBean::getMkbm));
for (Map.Entry<String, List<MyBean>> entry : groupedBeans.entrySet()) {
String key = entry.getKey();
List<MyBean> group = entry.getValue();
if (group.size() > 1) { // 如果有多个相同的mkbm
MyBean firstBean = group.get(0);
firstBean.setSl(group.size()); // 设置sl为相邻的数量
for (int i = 1; i < group.size(); i++) {
group.get(i).setSl(null); // 其他的设置为null
}
} else { // 对于只有一个的mkbm组
firstBean.setSl(null);
}
}
// 现在beans列表中的MyBean对象已经更新了sl字段
beans.forEach(bean -> System.out.println("MKBM: " + bean.getMkbm() + ", SL: " + bean.getSl()));
}
}
```
在这个例子中,`countAdjacentMkbms`函数接收一个`MyBean`列表,然后通过流操作将所有相同的mkbm值分到一个map的key-value对中。然后,对于每一个键(mkbm值),检查该组的大小,如果是大于1,则给第一个元素设置sl值,其余的设置为null。
阅读全文