求Java List 递归 算法

问题描述

求Java List 递归 算法:通过方法取得的List(myList)结构如下:id name parentId1 AA null2 BB 13 CC 14 DD 25 EE 26 FF 4想要一个递归方法,以myList为参数,最后返回一个List,能够遍历出如下树的结构:AA--BB----DD------FF----EE--CCFormBean:String id;String name;String parentId; 问题补充:实际上,我要的树的结构是要在部门名的下拉列表中显示,id,name,parentId对应部门表的三个字段,我用的是Struts2,在Action中得到部门的List(myList)后,不知道怎么样能把这个List通过一个方法,形成一个树的结构的List,然后再在页面上遍历,所以才提出此问题。

解决方案

LZ的可能直接由数据库里取的数据吧,可以参考下面的方法: public void toList(List src, List target,String parentId){ for(FormBean b:src){ if ((parentId==null && b.getParentId()==null) || (parentId!=null && parentId.equals(b.getParentId()))){ target.add(b); toList(src,target,b.getId()); } } }使用: ... target=new ArrayList<FormBean>(); toList(src,target,null);
解决方案二:
个人觉得你的bean的结构有问题:FormBean { private FormBean parent; private List<FormBean> childs; private String id; private String name; private void addChild(FormBean child) { child.setParent(this); this.childs.add(child); }}这样的一个结构代表一个树, 将会只是一个FormBean, 从这个FormBean可以拿到childs, 每个child还可以再拿childs. 这样比较好代表一个树.

时间: 2024-10-29 04:22:19

求Java List 递归 算法的相关文章

对java中递归问题的输出不理解,求大神解答!谢谢

问题描述 对java中递归问题的输出不理解,求大神解答!谢谢 对于这一段代码我能够理解,压栈然后出栈就是6,5,4 package recursion; public class testRecursion { public static void main(String[] args) { int num=3; recursion(num); } private static void recursion(int n){ n++; if(n<7){ recursion(n); System.o

求java中常用的加密、解密算法?

问题描述 求java中常用的加密.解密算法? 页面提交的密码.电话等信息通常需要加密后存放到数据库里,在个人信息展示时通常需要进行解密,如何实现?求案例或者思路. 解决方案 常用加密解密算法java常用的加密,解密,数字签名等APIJava Cipher类 DES算法(加密与解密) 解决方案二: 这个其实在百度里搜一下,到处都有答案,现提供一个参考文章:http://www.blogjava.net/amigoxie/archive/2014/07/06/415503.html 解决方案三: h

安卓后端-求Java高效合理排序算法

问题描述 求Java高效合理排序算法 安卓界面列表可任意拖拽变换列表数据顺序,保存数据在后端服务,怎样在后端实现排序,求各路高手指点,确切的方案也可以,大概思路方向也可以,希望大家不吝赐教,先谢过 解决方案 这个在排序的时候加上一个orderid,当你页面上改变位置的时候,就更新orderid发回去. 这个链接的前端可以借鉴http://www.cnblogs.com/breakdown/archive/2012/03/29/2423091.html

java编写一个算法,一个数用数组表示,执行加1操作,之后的数组用一个数表示。

问题描述 java编写一个算法,一个数用数组表示,执行加1操作,之后的数组用一个数表示. 用java编写一个算法,一个数用数组表示,执行加1操作,之后的数组用一个数表示. 解决方案 数组可以表示很多数的-你说,用一个数表示啥意思?? 解决方案二: 你应该是想要下面的实现.如果有用请采纳. import java.util.ArrayList; import java.util.List; public class TestMain { public static void main(String

Java中递归原理实例分析_java

本文实例分析了Java中递归原理.分享给大家供大家参考.具体分析如下: 解释:程序调用自身的编程技巧叫做递归. 程序调用自身的编程技巧称为递归( recursion).递归做为一种算法在程序设计语言中广泛应用. 一个过程或函数在其定义或说明中有直接或间接调用自身的一种方法,它通常把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解,递归策略只需少量的程序就可描述出解题过程所需要的多次重复计算,大大地减少了程序的代码量.递归的能力在于用有限的语句来定义对象的无限集合.  递归的三个

使用java实现LIS算法,出操队形的问题_java

假设有序列:2,1,3,5,求一个最长上升子序列就是2,3,5或者1,3,5,长度都为3. LIS算法的思想是: 设存在序列a. ① 如果只有一个元素,那么最长上升子序列的长度为1: ② 如果有两个元素,那么如果a[1]>a[0],则最长上升子序列的长度为2,a[1]为该最长上升子序列的最后一个元素;若a[1]<a[0],则最长上升子序列的长度为1,a[0]和a[1]均为  其最长上升子序列的最后一个元素. ③ 如果由三个元素,那么如果a[2]>a[0],a[2]>a[1],则a[

java创建递归二叉树,输出根数据时出现空指针异常

问题描述 java创建递归二叉树,输出根数据时出现空指针异常 代码如下:import java.io.File;import java.io.FileNotFoundException;import java.util.LinkedList;import java.util.Scanner;import java.util.*;class BiNode{ public String data; public BiNode lchild; public BiNode rchild; public

求java多线程教程或图书

问题描述 求java多线程教程或图书 如题,求java多线程开发教程,或图书. 目前可见需解决问题,多线程运算,返回结果. 解决方案 多线程并不需要一本书,只有几个关键问题搞清楚就足够了. 这些关键问题主要就是线程的同步.互斥.通讯.阻塞. 但是要想用多线程解决问题,关键不在这里,而是如何规划并行算法. 并行算法往往和线性算法有很大的不同.一些问题,人类甚至至今还没有找到并行的算法.比如经典的圆周率问题,直接用十进制方式求解,目前整个理论界就没有找到并行算法(十六进制的并行算法已经找到). 并行

c++-求路径交点的算法(路径用浮点型二维数组保存)

问题描述 求路径交点的算法(路径用浮点型二维数组保存) 我现在有一个二维数组,里面每个存储了屏幕的x,y变量,可以根据下标推出路径,现在需要求出这组路径数组交点的个数(及位置?). 解决方案 路径为什么是2维数组,用Java语言实现,你看得懂吗?