问题解答2024年4月28日

import java.util.ArrayList;
import java.util.List;
import java.util.Stack;//现有数据库里保存有行政区数据, 一个行政区是一行数据,包括行政区id,行政区名称,行政区父id。 比如:
//
//行政区ID,   行政区名称, 行政区父ID  
//1,             中国,            null
//2,             浙江省,         1
//3,                杭州市,         2
//4,                余杭区,            3
//
//
//要求编写一个服务接口,入参:行政区id,出参:树结构形式,包括当前行政区以及所有子行政区。
//
//比如入参是2,返回:
//浙江省
//-- 杭州市
//   -- 余杭区
//
//比如入参是1,返回:
//中国
//-- 浙江省
//  -- 杭州市
//     -- 余杭区
//
//比如入参是3,返回:
//杭州市
//-- 余杭区
public class Main {public static void main(String[] args) {// 数据模拟List<District> districtList = new ArrayList<District>();districtList.add(new District("1", "中国", null));districtList.add(new District("2", "浙江省", "1"));districtList.add(new District("3", "杭州市", "2"));districtList.add(new District("4", "湖州市", "2"));districtList.add(new District("5", "嘉兴市", "2"));districtList.add(new District("6", "绍兴市", "2"));districtList.add(new District("7", "余杭区", "3"));districtList.add(new District("8", "上城区", "3"));districtList.add(new District("9", "钱塘区", "3"));districtList.add(new District("10", "滨江区", "3"));Solution solution = new Solution(districtList);// 查询String districtId = "2";solution.getInfo(districtId);}
}class Solution {private List<District> districtList;public Solution(List<District> districtList) {this.districtList = districtList;}public void getInfo(String districtId) {// 设计思路,按照行政区获取数据的方式,以深度优先搜索为主(用stack实现),优先显示子节点// 数据放在list中,通过遍历的方式查询,模拟数据库查询int level = 1;  // 每一层的缩进控制Stack<District> stack = new Stack<District>();District district = getDistrictsById(districtId);if (district != null) {district.setLevel(level);stack.push(district);while (!stack.isEmpty()) {District district2 = stack.pop();
//				System.out.println(district2.getLevel() + " " + district2.getDistrictName());System.out.println(String.format("%0" + district2.getLevel() + "d", 0).replace("0", " ") + " --" + district2.getDistrictName());List<District> childList = getDistrictsByParentId(district2.getDistrictId());level++;for (District district3 : childList) {district3.setLevel(level);stack.push(district3);}}}}// 根据id查找本级数据District getDistrictsById(String districtId) {for (int i = 0; i < districtList.size(); i++) {District district = districtList.get(i);if (district.getDistrictId() == districtId) {return district;}}return null;}// 相当于根据一个父节点,查出一层的数据List<District> getDistrictsByParentId(String parentId) {// 模拟数据库查询List<District> districtResult = new ArrayList<District>();for (int i = 0; i < districtList.size(); i++) {District district = districtList.get(i);if (district.getParentId() == parentId) {districtResult.add(district);}}return districtResult;}
}// 行政区的类设计
class District {private String districtId;  // 行政区idprivate String districtName;  // 行政区名称private String parentId;   // 父idprivate int level;  // 临时控制每一层的缩进public District(String districtId, String districtName, String parentId) {this.districtId = districtId;this.districtName = districtName;this.parentId = parentId;}public String getDistrictId() {return districtId;}public void setDistrictId(String districtId) {this.districtId = districtId;}public String getDistrictName() {return districtName;}public void setDistrictName(String districtName) {this.districtName = districtName;}public String getParentId() {return parentId;}public void setParentId(String parentId) {this.parentId = parentId;}public int getLevel() {return level;}public void setLevel(int level) {this.level = level;}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/4388.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Linux】进程信号 -- 详解

⚪前言 注意&#xff1a;进程间通信中的信号量跟下面要讲的信号没有任何关系。 一、从不同角度理解信号 1、生活角度的信号 你在网上买了很多件商品&#xff0c;在等待不同商品快递的到来。但即便快递没有到来&#xff0c;你也知道快递来临时&#xff0c;你该怎么处理快递&a…

CDA认证:数据行业领跑者,告别危机和低谷!

近日&#xff0c;人力资源社会保障部、中央组织部、中央网信办、国家发展改革委、教育部、科技部、工业和信息化部、财政部、国家数据局等九部门印发《加快数字人才培育支撑数字经济发展行动方案&#xff08;2024—2026年&#xff09;》&#xff08;以下简称《行动方案》&#…

LeetCode39题: 组合总和(原创)

【题目描述】 给你一个 无重复元素 的整数数组 candidates 和一个目标整数 target &#xff0c;找出 candidates 中可以使数字和为目标数 target 的 所有 不同组合 &#xff0c;并以列表形式返回。你可以按 任意顺序 返回这些组合。candidates 中的 同一个 数字可以 无限制重复…

[NISACTF 2022]bilala的二维码

​​​​​​​NSSCTF{M0RS34ND282X231} 还有一个是像素我找不到

Orange3数据可视化(树查看器-决策树)

树视图 分类和回归树的可视化。 输入 树&#xff1a;决策树 输出 选中的数据&#xff1a;从树节点中选中的实例 数据&#xff1a;带有额外一列&#xff0c;显示每个点是否被选中 这是一个多功能的小部件&#xff0c;用于展示分类和回归树的2D可视化。用户可以选择一个节点…

物联网五层架构:每一层都扮演着不可或缺的角色——青创智通

物联网五层架构涵盖了感知层、网络层、数据层、应用层和业务层&#xff0c;每一层都扮演着不可或缺的角色&#xff0c;共同构成了物联网的完整生态系统。下面我们将详细探讨这五层架构的功能和特点。 首先&#xff0c;感知层是物联网的起点&#xff0c;负责获取和识别各种物理世…

Es6和Es5的区别?

ES5和ES6都是JavaScript语言的版本&#xff0c;ES5在2009年发布&#xff0c;ES6在2015年发布&#xff0c;两者之间有以下的区别&#xff1a; 1、变量声明方式不同&#xff1a;ES5使用var关键字进行变量声明&#xff0c;而ES6则引入了let和const关键字来声明变量。 2、块级作用…

(泛型+栈+队列+可变不可变)的实现(java版)

文章目录 1. 介绍2. 代码实现2.1 普通的栈2.2 普通的循环队列2.3 泛型栈2.4 泛型循环队列2.5 泛型可变栈2.6 泛型可变队列2.7 部分测试 3. 参考链接 如果你之前没有了解过栈或者队列&#xff0c;可以看看本文最后的链接&#xff0c;里面很详细 1. 介绍 泛型&#xff0c;泛指一…

ssm项目后端如何导出war及前端如何导出静态资源

后端如何导出war包 后端工具&#xff1a;IDEA 2020.1.3 运行我们编写工具maven里面的package 运行成功的日志 我们运行完&#xff0c;会生成一个target文件夹&#xff0c;在这个文件夹里面找到war包即可 前端如何导出静态资源 使用工具&#xff1a;WebStorm 2020.1.3 打开左…

VUE3核心语法

&#x1f49f;&#x1f49f;前言 ​ 友友们大家好&#xff0c;我是你们的小王同学&#x1f617;&#x1f617; 今天给大家打来的是 VUE3核心语法 希望能给大家带来有用的知识 觉得小王写的不错的话麻烦动动小手 点赞&#x1f44d; 收藏⭐ 评论&#x1f4c4; 小王的主页&#xf…

数据结构习题--旋转链表

数据结构习题–旋转链表 给你一个链表的头节点 head &#xff0c;旋转链表&#xff0c;将链表每个节点向右移动 k 个位置。注意这里的k可能超过链表的长度 方法&#xff1a;双指针 分析 旋转K次&#xff0c;我们其实就是相当于找到倒数第K个结点&#xff0c;让其成为头结点…

基于Springboot的考研资讯平台

基于SpringbootVue的考研资讯平台的设计与实现 开发语言&#xff1a;Java数据库&#xff1a;MySQL技术&#xff1a;SpringbootMybatis工具&#xff1a;IDEA、Maven、Navicat 系统展示 用户登录 首页 考研资讯 报考指南 资料信息 论坛信息 后台登录 考研资讯管理 学生管理 资…

Python重点数据结构基本用法

Python重点数据结构用法 运算符描述[] [:]下标&#xff0c;切片**指数~ -按位取反, 正负号* / % //乘&#xff0c;除&#xff0c;模&#xff0c;整除 -加&#xff0c;减>> <<右移&#xff0c;左移&按位与^ < < > >小于等于&#xff0c;小于&#…

微信公众号菜单管理接口开发

1、创建数据表 SET NAMES utf8mb4; SET FOREIGN_KEY_CHECKS = 0;-- ---------------------------- -- Table structure for wx_menu -- ---------------------------- DROP TABLE IF EXISTS `wx_menu`; CREATE TABLE `wx_menu` (`id` bigint(20) NOT NULL AUTO_INCREMENT COM…

学pyhton的第二十二天

原文链接&#xff1a;Python 图形化界面设计&#xff08;Tkinter&#xff09; - 简书 (jianshu.com) 相关博客链接 接第十八天Tkinter的内容&#xff1a; 单选按钮&#xff08;控件&#xff1a;Radiobutton&#xff09;&#xff1a; 除共有属性外&#xff0c;还具有显示文本…

数据结构 : 树的分类及在数据库索引中的运用

文章目录 一 &#xff1a;树的分类1、二叉树&#xff08;Binary Tree&#xff09;&#xff1a;2、二叉搜索树&#xff08;Binary Search Tree, BST&#xff09;&#xff1a;3、平衡二叉树&#xff1a;4、字典树&#xff08;Trie&#xff09;&#xff1a;5、多叉树&#xff08;M…

算法学习笔记Day9——动态规划基础篇

一、介绍 本文解决几个问题&#xff1a;动态规划是什么&#xff1f;解决动态规划问题有什么技巧&#xff1f;如何学习动态规划&#xff1f; 1. 动态规划问题的一般形式就是求最值。动态规划其实是运筹学的一种最优化方法&#xff0c;只不过在计算机问题上应用比较多&#xff…

opencv_17_翻转与旋转

一、图像翻转 1&#xff09;void flip_test(Mat& image); 2&#xff09;void ColorInvert::flip_test(Mat& image) { Mat dst; //flip(image, dst, 0); //上下翻转 flip(image, dst, 1); //左右翻转 // flip(image, dst, -1); //180度翻转 imsho…

OpenVINO安装教程 vcpkg版

通过 vcpkg 安装 OpenVINO™ Runtime 请注意&#xff0c;vcpkg 发行版&#xff1a; 仅提供 C/C API 不支持 NPU 推理 专用于所有主要操作系统的用户&#xff1a;Windows、Linux 和 macOS &#xff08;所有 x86_64 / ARM64 架构&#xff09; 系统要求处理器说明软件要求 完整…

B站美化插件,支持自定义,太酷辣~

大公司的软件和网站通常具有优雅的默认界面设计。 以国内二次元聚集地B站为例&#xff0c;可以说它的UI设计非常吸引人。与其他视频网站繁复的设计相比&#xff0c;B站的界面设计可以说是遥遥领先 然而&#xff0c;总有些人对默认的用户界面感到不满意&#xff0c;他们渴望尝试…