void (Integer id) { Map<Integer, Integer> map = new HashMap<>(); Set<Integer> children = mapTreeBranches.get(id); if (children != null) { for (Integer childid : children) { buildFilter(childid); Map<Integer, Integer> mapChild = mapExceptionRangeUniqueExit.get(childid); for (Entry<Integer, Set<Integer>> entry : mapExceptionRanges.entrySet()) { Integer handler = entry.getKey(); Set<Integer> range = entry.getValue(); if (range.contains(id)) { Integer exit; if (!range.contains(childid)) { exit = childid; } else if (map.containsKey(handler)) { exit = -1; } else { exit = mapChild.get(handler); } if (exit != null) { map.put(handler, exit); } } } } } mapExceptionRangeUniqueExit.put(id, map); }