美文网首页
一道编程题

一道编程题

作者: 有梦想的虫子_2018 | 来源:发表于2022-03-21 21:01 被阅读0次
package com.example.demo;

import org.springframework.util.CollectionUtils;

import java.util.ArrayList;
import java.util.List;

public class DepartmentTest {
        public static void main(String[] args) {
                List<Department> allDepartment = new ArrayList<>();
                Department dep1 = new Department(1, 0, "北京总部");
                Department dep3 = new Department(3, 1, "研发中心");
                Department dep4 = new Department(4, 3, "后端研发组");
                Department dep6 = new Department(6, 4, "后端实习生组");
                Department dep7 = new Department(7, 3, "前端研发组");
                Department dep8 = new Department(8, 1, "产品部");

                allDepartment.add(dep6);
                allDepartment.add(dep7);
                allDepartment.add(dep8);
                allDepartment.add(dep1);
                allDepartment.add(dep3);
                allDepartment.add(dep4);


            List<Department> subDepartments = DepartmentTest.getSub(3, allDepartment);
            for (Department subDepartment : subDepartments) {
                System.out.println(subDepartment);
            }
      }
      /**
       * 根据id,获取所有子部门列表(包括隔代子部门,一直到叶子节点)
       * 要求:不能新增参数,不能增加static变量
       * @param pid
       * @return
       */
        public static List<Department> getSub(int pid, List<Department> allDepartment) {
            return getSubList(pid, allDepartment);
        }

        public static List<Department> getSubList(int pid, List<Department> allDepartment){

            List<Department> subDepartment = new ArrayList<>();

            for (Department department  : allDepartment ) {
                if(department.getPid() == pid){
                    subDepartment.add(department);
                }
            }

            if(CollectionUtils.isEmpty(subDepartment)){
                return subDepartment;
            }

            for (Department department  : allDepartment ) {
                if(department.getPid() == pid){
                    List<Department> subList = getSubList(department.getId(), allDepartment);
                    subDepartment.addAll(subList);
                }
            }
            return subDepartment;
        }


  }
  class Department {
      /** id */
      private int id;
      /** parent id */
      private int pid;
      /** 名称 */
      private String name;
      public Department(int id, int pid, String name) {
          this.id = id;
          this.pid = pid;
          this.name = name;
      }
      public int getId() {
          return id;
      }
      public void setId(int id) {
          this.id = id;
      }
      public int getPid() {
          return pid;
      }
      public void setPid(int pid) {
          this.pid = pid;
      }
      public String getName() {
          return name;
      }
      public void setName(String name) {
          this.name = name;
      }
      @Override
      public String toString() {
          return "Department{" +
                  "id=" + id +
                  ", pid=" + pid +
                  ", name='" + name + '\'' +
                  '}';
      }
  }

相关文章

  • 编程与数学1 编程实现对一道加法数学题的答案探究

    利用PHP编程,对一道数学题的答案探究 题 这是一道三年级的数学题:用0至9这十个数字,组成一道加法竖式。 编程思...

  • 一道编程题

    题目 协助破案。假设已经查清,有A,B,C,D,E五个嫌疑人可能参与制造了一起银行抢劫案,但是不知其中到底是哪儿个...

  • 一道编程题

  • 《Python语言程序设计》第一章.练习与作业

    编程题 1.1 编程题 1.2 编程题 1.3 编程题 1.4 编程题 1.5 编程题 1.6 编程题 1.7 编...

  • 第七周

    这周我学了一点编程题还有密码题,自从上学期课程有上过C语言以后,很久没接触过编程了。 先看第一道题 这道题我用了三...

  • ES6中的类+Map

    昨天有一道题,用ES6中的类写一道业务编程题。题目大致如下 需求: 员工类(Staff)属性:员工姓名(name)...

  • L1W2神经网络入门编程题--深度学习笔记

    这是我做的第一道神经网络的编程题,使用python3.8,jupyter notebook。这道题的目的就是神经网...

  • 关于一道编程题的思考

    一道普通的编程题 以下这道编程题连续三年出现在本科《计算机安全学》的实践作业当中,每年大概会有100名左右的学生被...

  • ARTS(09)

    什么是 ARTS? 算法(Algorithm): 每周至少一道 LeetCode 算法题,加强编程训练和算法学习 ...

  • ARTS(05)

    什么是 ARTS? 算法(Algorithm): 每周至少一道 LeetCode 算法题,加强编程训练和算法学习 ...

网友评论

      本文标题:一道编程题

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