勤加练习,必能得心应手!不期速成,日拱一卒 !
态度决定一切
BlogJava
首页
新文章
新随笔
聚合
管理
posts - 167, comments - 30, trackbacks - 0
涉及到的算法问题思路
对于梅花雪树选中节点的删除:级联删除该节点下所有子孙节点
private
List processGetSysFunPointList(String id, TReqSysDTO sysDTO)
throws
ParseException
{
List rslist
=
new
ArrayList();
//
思路:
//
1,找出当前节点
//
2,找出当前节点的所有直接子节点
//
3,分别找出每个直接子节点的直接子节点
//
4,重复第3步操作,直至找出当前节点的所有子节点
//
算法:
//
1,先找出当前所有最新版本的节点,并封装成Map[pid,vo]数据结构,以提高算法查找效率。
//
注: 1)封装时遍历采用while循环结构以提高循环效率。
//
2)封装时对顶级节点,即父节点为空的节点,不进行封装处理。
//
3)封装结构的结果是:所有的非叶子节点的ID都包含map的keySet集合中;
//
2,根据上面的思路写递归算法来求解当前节点的所有子节点
Map map
=
new
HashMap();
List list
=
this
.myReqSystemFunctionPointDAO.findAll(sysDTO);
if
(list
!=
null
)
{
Iterator itr
=
list.iterator();
while
(itr.hasNext())
{
SysFunTreeNodeVO vo
=
(SysFunTreeNodeVO)itr.next();
//
找出当前当前节点
if
(id.equals(vo.getId()))
{
rslist.add(vo);
}
//
封装Map[pid,vo]数据结构,供递归算法使用
String pid
=
vo.getParentSysFunPointId();
if
(pid
!=
null
&&
!
pid.equals(
""
))
{
//
过滤顶级节点,顶级节点无需封装进map结构
if
(map.containsKey(pid))
{
((List)map.get(pid)).add(vo);
}
else
{
List tmp
=
new
ArrayList();
tmp.add(vo);
map.put(pid, tmp);
}
}
}
}
//
递归算法,找出当前节点的所有子节点
List sons
=
findSons(id, map);
if
(sons
!=
null
)
{
rslist.addAll(sons);
//
添加子节点
}
return
rslist;
}
public
List findSons(String id,Map srcmap)
{
List rslist
=
new
ArrayList();
if
(id
!=
null
&&
srcmap
!=
null
&&
srcmap.containsKey(id))
{
//
找出id的直接子节点。注:不是id的所有子节点,而是其一级子节点
List sons
=
(List) srcmap.get(id);
if
(sons
!=
null
)
{
rslist.addAll(sons);
//
添加直接子节点
Iterator itr
=
sons.iterator();
while
(itr.hasNext())
{
//
遍历添加直接子节点的所有子节点
SysFunTreeNodeVO vo
=
(SysFunTreeNodeVO) itr.next();
List sonslist
=
findSons(vo.getId(), srcmap);
rslist.addAll(sonslist);
}
}
}
return
rslist;
}
//封装成逗号隔开的串保存
String fids = "";
if(filesIdList !=null && filesIdList.size() > 0)
{
for(int i =0;i<filesIdList.size();i++)
{
fids = fids + filesIdList.get(i);
if(filesIdList.size() >1 && i!=filesIdList.size()-1)
{
fids = fids + ",";
}
}
}
posted on 2009-12-04 10:50
David1228
阅读(303)
评论(0)
编辑
收藏
所属分类:
算法总结
新用户注册
刷新评论列表
只有注册用户
登录
后才能发表评论。
网站导航:
博客园
IT新闻
知识库
C++博客
博问
管理
<
2009年12月
>
日
一
二
三
四
五
六
29
30
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
1
2
3
4
5
6
7
8
9
常用链接
我的随笔
我的评论
我的参与
最新评论
留言簿
(4)
给我留言
查看公开留言
查看私人留言
随笔分类
Andriod(2)
CSS(1)
ES(1)
Hibernate/ibatis(9)
HTML5(1)
J2EE(8)
JAVA(26)
JavaScript(10)
JQuery(13)
JSP、servlet(5)
Linux(26)
Netty(4)
Nginx,Lua(2)
NoSql(1)
Python(2)
Spring(8)
Struts(4)
WebServices
ZK(1)
云计算、虚拟化(12)
其他(5)
动态语言(4)
奋斗人生(2)
应用服务器(2)
性能优化(2)
数据库(12)
正则(1)
算法总结(1)
线程-模式-设计(5)
网络(1)
随笔档案
2017年9月 (1)
2017年8月 (1)
2017年7月 (2)
2017年6月 (2)
2017年5月 (2)
2016年12月 (1)
2016年11月 (1)
2016年7月 (1)
2016年1月 (1)
2015年12月 (1)
2015年10月 (2)
2015年9月 (2)
2015年7月 (1)
2014年12月 (1)
2013年11月 (2)
2013年10月 (2)
2013年9月 (1)
2013年8月 (4)
2013年7月 (5)
2013年6月 (2)
2013年3月 (6)
2013年2月 (1)
2013年1月 (5)
2012年11月 (2)
2012年10月 (4)
2012年8月 (1)
2012年7月 (1)
2012年6月 (2)
2012年3月 (2)
2012年2月 (1)
2012年1月 (3)
2011年11月 (1)
2011年10月 (1)
2011年9月 (6)
2011年8月 (5)
2011年7月 (6)
2011年6月 (5)
2011年5月 (2)
2011年3月 (1)
2011年1月 (2)
2010年12月 (4)
2010年11月 (2)
2010年9月 (13)
2010年8月 (19)
2010年7月 (1)
2010年5月 (1)
2010年1月 (1)
2009年12月 (3)
2009年11月 (2)
2009年8月 (9)
2009年4月 (1)
2009年3月 (1)
2009年1月 (1)
2008年12月 (2)
2008年8月 (2)
2008年7月 (1)
文章档案
2013年7月 (1)
2010年8月 (1)
2008年12月 (1)
2008年9月 (1)
新闻分类
云计算
新闻档案
2012年11月 (1)
相册
收集美图
收藏夹
lua程序(1)
网络相关(1)
Java
20非常有用的Java程序片段
20非常有用的Java程序片段
Java Map遍历方式的选择
Java Map遍历方式的选择
Linux知识相关
inux中增加swap分区文件的步骤方法
inux中增加swap分区文件的步骤方法
Spring-remoting使用心得1-RMI
Spring-remoting使用心得1-RMI
virsh管理工具
virsh管理工具
Spring相关
Restful Spring MVC
Restful Spring MVC
Spring Quartz动态配置时间
Spring Quartz动态配置时间
云计算/Linux/虚拟化技术/
CY12-Q3 OpenStack, OpenNebula,Eucalyptus,CloudStack社区活跃度比较
CY12-Q3 OpenStack, OpenNebula,Eucalyptus,CloudStack社区活跃度比较
vpsee 虚拟化技术 云计算 数据中心
很棒的参考学习的博客
xen FAQ
http://zhigang.org/files/docbook/xen-faq.html
中国云计算
http://www.chinacloud.cn/default.aspx
以AWS和vCloud为标杆看四大开源平台的定位
以AWS和vCloud为标杆看四大开源平台的定位
友情博客
Veda 原型博客交流
多线程并发编程
xylz,imxylz的JUC
线程、并发编程
线程、并发编程
开源技术
ICloud云管理详解架构
http://www.javachen.com/2011/07/opennebula-architecture/ ICloud云管理详解架构
Java开源大全
NODEJS 服务端的javascript
http://cnodejs.org/
开源黄页-开源博文
开源黄页-开源博文http://yp.oss.org.cn/software/resource_page.php?cat_id=52
持久层技术相关
搜索
积分与排名
积分 - 356957
排名 - 154
最新评论
1. re: JAVA应用CPU占用100%|内存泄漏分析总结
@Jet Mah
这有可能是blogjava网站做了迁移,将图片数据丢了,抽空我重新上传下。谢谢关注
--David1228
2. re: JAVA应用CPU占用100%|内存泄漏分析总结
文章中的图片都无法显示了
--Jet Mah
3. re: struts2漏洞版本升级过程
楼主写的真好,404这个我也遇到了,想知道楼主在登录页面都没打开的情况下是在哪设置的断点,怎么分析找到的问题的根本原因的?怎么跟的代码?
--清澈希望
4. re: [转] JVM调优总结 + jstat 分析
@shao6254842
深入理解Java虚拟机这本书有对G1收集器的介绍,可以参考下。
--David1228
5. re: [转] JVM调优总结 + jstat 分析
你好,有没有介绍G1GC的文章呀?
--shao6254842
阅读排行榜
1. 详解Java GC的工作原理+Minor GC、FullGC(33392)
2. Thrift RPC框架介绍(28316)
3. Maven及Nexus私服搭建(23718)
4. struts2漏洞版本升级过程(21735)
5. Mybatis3.2.1整合Spring3.1(21409)
评论排行榜
1. struts2漏洞版本升级过程(6)
2. 源代码分析之HashMap(4)
3. 深入Struts2的配置文件(3)
4. tomcat-restart shell脚本(2)
5. JAVA应用CPU占用100%|内存泄漏分析总结(2)