/ 树状结构,所有叶子结点,如果离职了,需要直接放弃。非叶子结点离职了,需要修改名字为“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)