使用Iterator遍历keySet(),按条件删除即可。
private static void caseDFS(XMindRootDataEntity rootData, int level, Map<Integer, String> branchContent) {
int newLevel = level + 1;
// System.out.println("--------- " + level + " ------------");
XMindDataObjEntity currNode = rootData.getData();
// System.out.println("currNode = " + currNode);
branchContent.put(level, currNode.getText());
List<XMindRootDataEntity> childNodes = rootData.getChildren();
if (!CollectionUtils.isEmpty(childNodes)) {
// childNodes.forEach(XMindCaseAPIImpl::caseDFS);
childNodes.forEach( child -> {
caseDFS(child, newLevel, branchContent);
} );
} else {
// 报java.util.ConcurrentModificationException异常
// branchContent.keySet().forEach(key -> {
// if (key > level) {
// branchContent.remove(key);
// }
// });
// 正常删除
Iterator<Integer> iterator = branchContent.keySet().iterator();
iterator.forEachRemaining(ele -> {
if (ele > level) {
iterator.remove();
}
});
System.out.println(branchContent.toString());
System.out.println(" ========================================== ");
// System.out.println("============ end ====================");
}
}