List allMenus = menuDao.findBy(“status”, Status.AVAILABLE.getKey(), “priority”, false); List rootMenu = new ArrayList (); if (CollectionUtils.isNotEmpty(allMenus)) { Map<Long, Menu> menuMap = new HashMap<Long, Menu>(); for (Menu menu : allMenus) { if (menu.getParentId() == null) { rootMenu.add(menu); } menuMap.put(menu.getId(), menu); } for (Menu menu : allMenus) { if ((menu.getParentId() != null) && menuMap.containsKey(menu.getParentId())) { menuMap.get(menu.getParentId()).addSubMenus(menu); } } } return rootMenu;