/ 树状结构,所有叶子结点,如果离职了,需要直接放弃。非叶子结点离职了,需要修改名字为“AA(已离职)”,作为提示
private static void checkGoState(List<OrgMember> memberList) {
if (CollectionUtils.isEmpty(memberList)) {
return;
}
Iterator<OrgMember> iterator = memberList.iterator();
while(iterator.hasNext()){
OrgMember orgMember = iterator.next();
// 没下级
boolean noChild = CollectionUtils.isEmpty(orgMember.getMemberList());
// 人离职了
boolean hasGo = hasGo(orgMember);
// 如果没有下级且离职, 结点 不保留。
if (noChild && hasGo) {
memberList.remove(orgMember);
continue;
}
// 离职,但有下级(名字加上特殊标记)
if (hasGo) {
orgMember.setName(orgMember.getName() + "(已离职)");
}
checkGoState(orgMember.getMemberList());
}
}
|
手抖,上面了写错了。应该用
iterator.remove
而不是 memberList.remove(orgMember)