一道編程題

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, "研發(fā)中心");
                Department dep4 = new Department(4, 3, "后端研發(fā)組");
                Department dep6 = new Department(6, 4, "后端實習(xí)生組");
                Department dep7 = new Department(7, 3, "前端研發(fā)組");
                Department dep8 = new Department(8, 1, "產(chǎn)品部");

                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);
            }
      }
      /**
       * 根據(jù)id,獲取所有子部門列表(包括隔代子部門,一直到葉子節(jié)點)
       * 要求:不能新增參數(shù),不能增加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 + '\'' +
                  '}';
      }
  }
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容