美文网首页
JAVA代码实现多级树结构封装对象

JAVA代码实现多级树结构封装对象

作者: 额嗬 | 来源:发表于2018-11-13 10:00 被阅读0次

JDK1.8

public class RegionBeanTree implements Serializable{
        //保证3个参数 其他随意
    private static final long serialVersionUID = 1L;

    private String code;
    
    private String pid;
    
    private String label;
}

public class TreeToolUtils {

    private List<RegionBeanTree> rootList; //根节点对象存放到这里

    private List<RegionBeanTree> bodyList; //其他节点存放到这里,可以包含根节点

    public TreeToolUtils(List<RegionBeanTree> rootList, List<RegionBeanTree> bodyList) {
        this.rootList = rootList;
        this.bodyList = bodyList;
    }

    public List<RegionBeanTree> getTree(){   //调用的方法入口
        if(bodyList != null && !bodyList.isEmpty()){
        //声明一个map,用来过滤已操作过的数据
            Map<String,String> map = Maps.newHashMapWithExpectedSize(bodyList.size());
            rootList.forEach(beanTree -> getChild(beanTree,map));
            return rootList;
        }
        return null;
    }

    public void getChild(RegionBeanTree beanTree,Map<String,String> map){
        List<RegionBeanTree> childList = Lists.newArrayList();
        bodyList.stream()
                .filter(c -> !map.containsKey(c.getCode()))
                .filter(c ->c.getPid().equals(beanTree.getCode()))
                .forEach(c ->{
                    map.put(c.getCode(),c.getPid());
                    getChild(c,map);
                    childList.add(c);
                });
        beanTree.setChildren(childList);
    }

    public static void main(String[] args){
        RegionBeanTree beanTree1 = new RegionBeanTree();
        beanTree1.setCode("540000");
        beanTree1.setLabel("西藏省");
        beanTree1.setPid("100000"); //最高节点
        RegionBeanTree beanTree2 = new RegionBeanTree();
        beanTree2.setCode("540100");
        beanTree2.setLabel("拉萨市");
        beanTree2.setPid("540000");
        RegionBeanTree beanTree3 = new RegionBeanTree();
        beanTree3.setCode("540300");
        beanTree3.setLabel("昌都市");
        beanTree3.setPid("540000");
        RegionBeanTree beanTree4 = new RegionBeanTree();
        beanTree4.setCode("540121");
        beanTree4.setLabel("林周县");
        beanTree4.setPid("540100");
        RegionBeanTree beanTree5 = new RegionBeanTree();
        beanTree5.setCode("540121206");
        beanTree5.setLabel("阿朗乡");
        beanTree5.setPid("540121");
        RegionBeanTree beanTree6 = new RegionBeanTree();
        List<RegionBeanTree> rootList = new ArrayList<>();
        rootList.add(beanTree1);
        List<RegionBeanTree> bodyList = new ArrayList<>();
        bodyList.add(beanTree1);
        bodyList.add(beanTree2);
        bodyList.add(beanTree3);
        bodyList.add(beanTree4);
        bodyList.add(beanTree5);
        TreeToolUtils utils =  new TreeToolUtils(rootList,bodyList);
        List<RegionBeanTree> result =  utils.getTree();
        result.get(0);
    }
}

相关文章

  • JAVA代码实现多级树结构封装对象

    JDK1.8

  • 面向对象的三大特性

    封装、继承、多态 封装:把具体的对象封装成抽象的类,隐藏内部实现、对象的属性以及实现细节,仅对外公开接口,提高代码...

  • 对像和类

    Java 对象和类 多态 继承 封装抽象 Java对象和类 类对象实例方法消息解析代码: 11 运行结果: 小狗的...

  • 封装性和private关键字

    封装 什么是封装? 封装是指隐藏对象的属性和实现细节,仅对外提供公共访问方式。 封装的优点: 隐藏代码的实现细节,...

  • JS面向对象整理篇一——基础概念衍生

    JS面向对象 oop 继承:实例可以继承A对象中的方法和属性,减少代码冗余 封装:对象把实现过程封装在方法中,调用...

  • CSS常用菜单(三)

    3、多级菜单 下面我们来实现如下图所示的多级菜单 html代码: css代码: body { margin: 0;...

  • JAVA

    Java语言的特性 Java的三大特性:封装、继承、多态 封装:隐藏对象的属性和实现细节,仅对外提供公共的访问方式...

  • Android面试宝典 - 技术篇

    一、JAVA 1. Java的三大特性 1.1 封装 封装是指隐藏对象的属性和实现细节,仅对外提供公共访问方式 封...

  • [JAVA]面向对象的三大特性

    学习Java的进阶过程,是理解面向对象的思想,掌握面向对象的基本原则以及Java面向对象基本实现原理,熟练使用封装...

  • iOS多级联动选择器,地址、时间选择(Swift3.0版)

    iOS控件UIPickerView和DatePicker可实现滑动选择功能。基于UIPickerView封装多级联...

网友评论

      本文标题:JAVA代码实现多级树结构封装对象

      本文链接:https://www.haomeiwen.com/subject/czdkfqtx.html