根据相同编号归为一组,显示同一编号的所有人员
// 编号 组名 姓名 性别 民族
// 00001 — 刘军 男 汉族
// 00001 — 王红 女 汉族
// 00001 — 刘瑞 男 汉族
// 00001 — 刘金 男 汉族
// 00001 — 宋莲 女 汉族
// 00002 — 刘民 男 汉族
// 00002 — 李双 女 汉族
// 00002 — 刘梦 女 汉族
// 00002 — 刘圆 女 汉族
// 00003 — 刘彦 男 汉族
// 00003 — 郑亚 女 汉族
// 00003 — 刘绿 女 汉族
// 00004 — 刘群 男 汉族
// 00004 — 黄瑟 女 汉族
// 00004 — 刘辉 男 汉族
// 00004 — 刘平 女 汉族
// 00004 — 闫霜 男 汉族
List<Entity > EntityList = Service.getEntities(); //数据库的所有信息
//创建map
Map<String, List<Entity>> result = new TreeMap<>();
//遍历所有信息,添加map
for (Entity InfoEntity : EntityList ) {
if (result.containsKey(InfoEntity.getBh())) { //包含相同编号,
result.get(InfoEntity.getBh()).add(zsInfoEntity); //相同编号追加到集合中
}else { //每组中只有一个的
ArrayList<InfoEntity> list = new ArrayList<>();
list.add(InfoEntity);
result.put(InfoEntity.getBh(), list);//直接添加到集合中
}
}
// 返回数据 {0001:[{人员1},{人员2}]} {0002:[{人员1},{人员2}]......}
遍历map的value。 赋值给新的实体类(所需要的格式)
@Data
public class NewEntity {
int Bh; //编号
int Num; //每组人员个数
List<Entity> Entities;
}
//
ArrayList<NewEntity> arr = new ArrayList<>();
//只取map 的value 遍历,添加到新的对象,ZsInfoEntity
Iterator<Map.Entry<String, List<InfoEntity>>> it =result.entrySet().iterator();
while (it.hasNext()) {
NewEntity newEntity = new NewEntity ();
Map.Entry<String, List<Entity>> entry = it.next();
newEntity .setNum(entry.getValue().size());
newEntity .setBh(entry.getKey());
newEntity .setEntities(entry.getValue());
arr.add(zs);
}
return arr;//[{bh:001,Num:n,entities:[{1},{2}......]}]