关于service层 递归算法 安全性 效率等相关考虑

木秀林 2018-04-16 01:32:00
由于业务需求,需要在一个树形结构中删除叶子,防止误操作,不允许直接删除非叶子节点,同时节点删除是设置删除字段.不是直接delete.

所以 第一想到用递归,将判断和删除(修改节点状态) 封装到service 方法中.

但是在service层直接自己调自己是否会引起一系列问题:
1.是否会出现线程不安全
2.是否会出现递归导致性能变得很差

求大神指导.
...全文
1461 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
木秀林 2018-05-21
  • 打赏
  • 举报
回复
什么时候该用递归什么时候用循环 感觉这中间这个度很难把握 , 什么时候这个性能可以忽略 什么时候该采取更优雅的递归 不过看基础源码中貌似还是很少出现使用递归的 本贴暂时不结贴 ,希望出现大神们的真知灼见!!!
qq_36589663 2018-05-19
  • 打赏
  • 举报
回复
循环有循环的好处,循环效率是要比递归高,但是递归更容易直观的了解代码,更容易理解,跟容易写
qq_36589663 2018-05-19
  • 打赏
  • 举报
回复
有树结构这样的,个人建议够着path 在path中做,增加同级,增加下级,或者删除同级,删除同级和下级,更容易处理
yjsl__ 2018-05-18
  • 打赏
  • 举报
回复
删一个还是批量删?
  • 打赏
  • 举报
回复
引用 5 楼 qq_35530042 的回复:
[quote=引用 1 楼 lwb314 的回复:] 我觉得根本不需要这么麻烦,循环一遍所以节点,看看有没有子节点,没有就删除就可以。比递归简单的多,你递归那么多次,最后还是等于全部循环了一遍
你说的解决方法不错,但会不会太简单粗暴了 我开始想到的是这个,但想换成优雅点的编码 但对封装到service 方法 是否安全有这一考虑?还不是很明白[/quote]循环要比你的递归强好多,你的递归也是在循环。
木秀林 2018-05-17
  • 打赏
  • 举报
回复
引用 1 楼 lwb314 的回复:
我觉得根本不需要这么麻烦,循环一遍所以节点,看看有没有子节点,没有就删除就可以。比递归简单的多,你递归那么多次,最后还是等于全部循环了一遍
你说的解决方法不错,但会不会太简单粗暴了 我开始想到的是这个,但想换成优雅点的编码 但对封装到service 方法 是否安全有这一考虑?还不是很明白
木秀林 2018-05-17
  • 打赏
  • 举报
回复
引用 2 楼 maradona1984 的回复:
线程安不安全这个看你代码怎么写,心里应该有数 性能差不差得看你树有多大,更加心里应该有数 而且递归并不代表性能差
递归使用的是栈,应该性能肯定会更差
木子0204 2018-04-18
  • 打赏
  • 举报
回复
个人感觉考虑的有点多了,哈哈
maradona1984 2018-04-16
  • 打赏
  • 举报
回复
线程安不安全这个看你代码怎么写,心里应该有数 性能差不差得看你树有多大,更加心里应该有数 而且递归并不代表性能差
  • 打赏
  • 举报
回复
我觉得根本不需要这么麻烦,循环一遍所以节点,看看有没有子节点,没有就删除就可以。比递归简单的多,你递归那么多次,最后还是等于全部循环了一遍

67,512

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧