请教一个算法问题,有一个集合,List<monospace;">DeptUserModel> duList;
DeptUserModel,如下图所示:
class="java" name="code">public class DeptUserModel {
private String goupName;
private List<String> userid;
public String getGoupName() {
return goupName;
}
public void setGoupName(String goupName) {
this.goupName = goupName;
}
public List<String> getUserid() {
return userid;
}
public void setUserid(List<String> userid) {
this.userid = userid;
}
@Override
public String toString() {
return "DeptUserModel [goupName=" + goupName + ", userid=" + userid
+ "]";
}
}
现在我需要把duList里面所有goupName相同的DeptUserModel合并。以下是我的解决方案,求复杂度低一点的解决方法。?
?
/**
* 合并 List<DeptUserModel> 把具有相同部门的用户合并
* @param duList
* @return
*/
public List<DeptUserModel> getDeptUserModelByDeptUserModel( List<DeptUserModel> duList){
//合并DeptUserModel,把所有部门相同的合并到一起
List<DeptUserModel> duListTemp = new ArrayList<DeptUserModel>();
for (DeptUserModel deptUserModel : duList) {
if(duListTemp.size()<1){
duListTemp.add(deptUserModel);
}else{
DeptUserModel dum = new DeptUserModel();
boolean ifAdd = false;
for (DeptUserModel deptUserModelTemp : duListTemp){
if(deptUserModelTemp.getGoupName().equals(deptUserModel.getGoupName())){
List<String> list = new ArrayList<String>();
list.addAll(deptUserModelTemp.getUserid());
list.addAll(deptUserModel.getUserid());
deptUserModelTemp.setUserid(list);
ifAdd = false;
}else if(!deptUserModelTemp.getGoupName().equals(deptUserModel.getGoupName())){
dum = deptUserModel;
ifAdd = true;
}
}
if(ifAdd){
duListTemp.add(dum);
}
}
}
return duListTemp;
}
?