Java递归
来源:互联网 发布:聊天室软件销售 编辑:程序博客网 时间:2024/05/22 00:12
A.不使用递归:
import java.io.File;import java.util.LinkedList;public class FileSystem { public static void main(String[] args) { long a = System.currentTimeMillis(); LinkedList list = new LinkedList(); File dir = new File("c://java//"); File file[] = dir.listFiles(); for (int i = 0; i < file.length; i++) { if (file[i].isDirectory()) list.add(file[i]); else System.out.println(file[i].getAbsolutePath()); } File tmp; while (!list.isEmpty()) { tmp = list.removeFirst(); if (tmp.isDirectory()) { file = tmp.listFiles(); if (file == null) continue; for (int i = 0; i < file.length; i++) { if (file[i].isDirectory()) list.add(file[i]); else System.out.println(file[i].getAbsolutePath()); } } else { System.out.println(tmp.getAbsolutePath()); } } System.out.println(System.currentTimeMillis() - a); }}B.使用递归:
import java.io.File;import java.util.ArrayList;public class FileSystem1 { private static ArrayList filelist = new ArrayList(); public static void main(String[] args) { long a = System.currentTimeMillis(); refreshFileList("c://java"); System.out.println(System.currentTimeMillis() - a); } public static void refreshFileList(String strPath) { File dir = new File(strPath); File[] files = dir.listFiles(); if (files == null) return; for (int i = 0; i < files.length; i++) { if (files[i].isDirectory()) { refreshFileList(files[i].getAbsolutePath()); } else { String strFileName = files[i].getAbsolutePath().toLowerCase(); System.out.println("---"+strFileName); filelist.add(files[i].getAbsolutePath()); } } }}
结论:经过测试,使用递归的方法B性能相对好一些。
/**
*
**/
package com.css.yj.res.util.common;
import java.util.Iterator;
import java.util.List;
import com.css.yj.res.resListManage.model.DmSxlxBO;
import com.css.yj.res.util.model.XzqhVO;
public class XlToXML {
/**
* <p>
* 功能说明:将下拉属性实体集合转换成XML 要求:列表集合元素必须按照树形结构放置
* </p>
*
* @param zyxl
* 树list
* @return String
* @throws
*/
public static String getTreeXML(List zyxl, String treeName) {
StringBuffer buf = new StringBuffer(
"<?xml version=/"1.0/" encoding=/"UTF-8/"?>");
buf.append("<navi>");
buf.append("<navi treeName=/"");
buf.append(treeName);
buf.append("/">");
// 循环树节点,null表示循环第一层
buf.append(getListToXML(zyxl, null));
buf.append("</navi>");
buf.append("</navi>");
return buf.toString();
}
/**
* <p>
* 功能说明:将下拉属性实体集合转换成XML 要求:列表集合元素必须按照树形结构放置,递归实现
* </p>
*
* @param zyxl
* 树list,dsBO不为null,叶子节点的递归循环
* @return String
* @throws
*/
private static String getListToXML(List zyxl, DmSxlxBO dsBO) {
StringBuffer buf = new StringBuffer();
Iterator zyxl_ite = zyxl.iterator();
DmSxlxBO bo = null;
if (dsBO == null) {
while (zyxl_ite.hasNext()) {
bo = (DmSxlxBO) zyxl_ite.next();
if ("".equals(bo.getSjlxbh()) || (bo.getSjlxbh() == null)) {
buf.append("<navi prikey=/"" + bo.getLxbh()
+ "/" storeid=/"" + bo.getSjlxbh() + "/" title=/""
+ bo.getLxmc() + "/">/n");
// 执行dsBO不为null的循环
buf.append(getListToXML(zyxl, bo));
buf.append("</navi>/n");
}
}
} else {
while (zyxl_ite.hasNext()) {
bo = (DmSxlxBO) zyxl_ite.next();
if (dsBO.getLxbh().equals(bo.getSjlxbh())) {
buf.append("<navi prikey=/"" + bo.getLxbh()
+ "/" storeid=/"" + bo.getSjlxbh() + "/" title=/""
+ bo.getLxmc() + "/">/n");
// 递归循环
buf.append(getListToXML(zyxl, bo));
buf.append("</navi>/n");
}
}
}
return buf.toString();
}
/*
* public static void main(String[] args) { List list = new ArrayList();
* DmSxlxBO bo = new DmSxlxBO(); bo.setLxbh("1"); bo.setSjlxbh("");
* bo.setLxmc("1111"); list.add(bo); DmSxlxBO bo1 = new DmSxlxBO();
* bo1.setLxbh("2"); bo1.setSjlxbh("1"); bo1.setLxmc("2222"); list.add(bo1);
* DmSxlxBO bo2 = new DmSxlxBO(); bo2.setLxbh("3"); bo2.setSjlxbh("1");
* bo2.setLxmc("3333"); list.add(bo2); DmSxlxBO bo3 = new DmSxlxBO();
* bo3.setLxbh("4"); bo3.setSjlxbh("2"); bo3.setLxmc("4444"); list.add(bo3);
* DmSxlxBO bo4 = new DmSxlxBO(); bo4.setLxbh("5"); bo4.setSjlxbh("3");
* bo4.setLxmc("5555"); list.add(bo4); DmSxlxBO bo5 = new DmSxlxBO();
* bo5.setLxbh("6"); bo5.setSjlxbh("4"); bo5.setLxmc("66666");
* list.add(bo5); DmSxlxBO bo6 = new DmSxlxBO(); bo6.setLxbh("7");
* bo6.setSjlxbh("5"); bo6.setLxmc("77777"); list.add(bo6); ZyBOToXML zbtXML =
* new ZyBOToXML(); System.out.println(zbtXML.getTreeXML(list)); }
*/
}
- java递归
- Java递归
- JAVA递归
- java 递归
- Java - 递归
- Java 递归
- JAVA递归
- java 递归
- java递归
- java递归
- 递归 Java
- java递归
- Java递归
- java递归
- Java 递归
- JAVA递归
- java递归
- 【Java】递归
- 页面的生命周期
- 网站成功的26条定律
- 在linux下如何查看硬件信息
- Static 作用详述
- 比较Business Objects与MicroStrategy的10个关键性问题
- Java递归
- (1) 右手弹拨的“同弦换指”原则
- 关以太网的冲突检测
- skyway 国际化
- PushRegistry Demo
- Exception in thread "main" java.lang.NoClassDefFoundError
- linux
- 控制与捕捉输入法的实现单元
- RichFace标签学习笔记