多级关联打印树形结构

package xyrj.tree.utils;



import java.util.ArrayList;

import java.util.HashMap;

import java.util.List;

import java.util.Map;



/**

* @description

* 

* @classname PrintTree 

* @author maoyun0903<[email protected]>

* @date 2012-12-16 下午02:14:15 

* @version 1.0

*/

public class PrintTree {



/**

* @field    整个tree模块中所有的记录

*/

private static List<Map<String,String>> _totalList;



/**

* @field    生成的树形结构集合

*/

private static List<Map<String,String>> treeList;



/**

* @field    深度

*/

private static int _level = 0;



/**

* @field    树形前缀符

*/

private static String _prefix="|";



/**

* @field    树形修饰符

*/

private static String _fix="-";



/**

* 构造方法(传所有记录数组集合)

*

* @description 

* 

* @param totalList

*/

public PrintTree(List<Map<String,String>> totalList)

{

_totalList    =    totalList;

treeList =    new ArrayList<Map<String,String>>();

System.out.println("构造方法");

}







/** 

* 打印树形结构

* @description

* @title main

* @param @param args

* @return void

* @throws 

*/

public static void main(String[] args) {



List<Map<String,String>> listMap = new ArrayList<Map<String,String>>();

Map map01    =    new HashMap<String,String>();

map01.put("tree_id", "1");

map01.put("tree_name", "湖南省");

map01.put("parent_id", "-1");



Map map02    =    new HashMap<String,String>();

map02.put("tree_id", "2");

map02.put("tree_name", "湖北省");

map02.put("parent_id", "-1");



Map map03    =    new HashMap<String,String>();

map03.put("tree_id", "3");

map03.put("tree_name", "常德市");

map03.put("parent_id", "1");



Map map04    =    new HashMap<String,String>();

map04.put("tree_id", "4");

map04.put("tree_name", "长沙市");

map04.put("parent_id", "1");



Map map05    =    new HashMap<String,String>();

map05.put("tree_id", "5");

map05.put("tree_name", "荆州市");

map05.put("parent_id", "2");



listMap.add(map01);

listMap.add(map02);

listMap.add(map03);

listMap.add(map04);

listMap.add(map05);



PrintTree    printTree    =    new PrintTree(listMap);

String str    =    printTree.genTree();

System.out.println(str.toString());



}



/**

* 打印最后树形结构

* 

* @description

* 

* @title genTree

* @param @return

* @return String

* @throws

*/

public static String genTree()

{

String father_id    =    "-1";

//System.out.println("genTree"+_totalList.size());

_genDiGuiList(father_id , 0);

StringBuffer    printTree    =    new StringBuffer();

//System.out.println("treeList"+treeList.size());

for(int i=0 ; i < treeList.size() ; i++)

{

printTree.append("<option name=\""+treeList.get(i).get("tree_id")+"\">"+

treeList.get(i).get("tree_name")+

"</option>");

}

return printTree.toString();

}



/**

* 递归遍历整个List集合

* 

* @description

* 

* @title _genDiGuiList

* @param @return    经过处理后的Map集合数组

* @return String

* @throws

*/

private static List<Map<String,String>> _genDiGuiList(String father_name,int count)

{

if(null != _totalList && _totalList.size() > 0)

{

for(int i = 0 ; i < _totalList.size() ; i++ )

{

_level=count;

String str    =    "";

String allStr    =    "";

//System.out.println(_totalList.get(i).get("tree_name"));

if((_totalList.get(i).get("parent_id")).equals(father_name))

{

//System.out.println(_level);

if(_level>0)

{

for(int j=0;j<_level;j++)

{

str    += _fix ;

}

allStr    =    _prefix + str ;

}

_level++;

//把totalList[i]取出赋值tree_name

String field_id    =    _totalList.get(i).get("tree_id");

String field_name    =    _totalList.get(i).get("tree_name");

//System.out.println(field_id+"...."+field_name);

Map<String,String> map    =    new HashMap<String,String>();

map.put("tree_id", field_id);

map.put("tree_name", allStr+field_name);

treeList.add(map);

//System.out.println(field_id);

_genDiGuiList(field_id,_level);

}else

{

continue;

}

}

}

return treeList;

}

}

 

你可能感兴趣的:(打印)