顺序排列的集合排序为树形集合
来源:互联网 发布:djvu转pdf软件 编辑:程序博客网 时间:2024/06/15 00:01
要求 表结构
ID , 父ID,层级,当前层排序号 (例子如下) 层级和当前层排序号为提供原始集合排序使用
public class ResourceVo { /** * 资源编号 */ private String id; /** * 资源名称 */ private String name; /** * 父资源编号 */ private String parentId; /** * 创建时间 */ private Date createTime; /** * 修改时间 */ private Date updateTime; /** * 子资源集合 来自resourceVo,为了兼容前端页面 */ private List<ResourceVo> list; /** * 排序 */ private int sort; /** * 层级 */ private int grade; get和set方法略。 }
/** * 生成树形数据 * @param resources 原始按照层级顺序排序后的集合 * @param resource_id 第一个ID编号 * @return 排序后的树图 */public List<ResourceVo> getTree(List<ResourceVo> resources, String resource_id){ //创建返回的树图集合 List<ResourceVo> rootResources = new ArrayList<ResourceVo>(); //遍历原始集合 for (ResourceVo thisResources : resources) { //判断第一个元素 (ID等于指定的ID) if (thisResources.getId().equals(resource_id)) { //放入结果集合 rootResources.add(thisResources); } else { //查询出遍历对象的父对象 ResourceVo parentMobCateBarVo = findResources(rootResources, thisResources.getParentId()); //判断父类型不为空(为空表示原始排序有问题) if (parentMobCateBarVo != null) { //判断父类型下面是否有集合,没有创建集合 if (parentMobCateBarVo.getList() == null) { parentMobCateBarVo.setList(new ArrayList<ResourceVo>()); } //把遍历对象放到父对象的集合中 parentMobCateBarVo.getList().add(thisResources); } else { log.error("数据问题:" + thisResources); } } } //返回排序后的树状集合 return rootResources;}/** * 获取父类型 * @param rootResources 树图集合 * @param tagetId 遍历对象的父类型ID * @return */private ResourceVo findResources(List<ResourceVo> rootResources, String tagetId) { //遍历树图集合 for (ResourceVo mobCateBarVo : rootResources) { //如果遍历对象的ID等于传入的ID返回当前遍历对象 if (mobCateBarVo.getId().equals( tagetId)) { return mobCateBarVo; } //如果遍历对象中保存的对象集合不为空迭代调用 if (mobCateBarVo.getList() != null && mobCateBarVo.getList().isEmpty() == false) { ResourceVo tg = findResources(mobCateBarVo.getList(), tagetId); if (tg != null) { return tg; } } } //集合遍历完毕没有找到返回空 return null;}
阅读全文
0 0
- 顺序排列的集合排序为树形集合
- 一些排序的集合
- 集合的排序
- List集合的排序
- 集合的排序
- map集合的排序
- set集合的排序
- 集合的排序
- 集合排序的实现
- java 集合的排序
- 集合的排序
- 集合的排序
- 关于集合的排序
- List集合、Map集合、数组的排序
- TreeSet集合,可排序的集合
- 集合排序
- 集合排序
- 排序集合
- Java equals方法特性
- mongodb centos7.3 初探
- 15算法课程 258. Add Digits
- HDOJ1326 Box of Bricks
- Qt 5 WindowFlags枚举类型
- 顺序排列的集合排序为树形集合
- golang学习之negroni/gizp源码分析
- windows安装mysql-5.7压缩版详细教程
- 二维数组输出
- windows下配置nginx+php环境
- js以逗号分隔的字符串怎么转化为数组
- 自定义ViewGroup实现流式布局
- JS图片预加载
- poi导出exce表实例