现在的位置: 首页 > 综合 > 正文

JAVA写的无限分类(原创)(功能待完善)http://hi.baidu.com/wolftotem1984/blog/item/0fa3ac54b79f501f3a2935fa.html/cmtid/ed62b258ab7de9df9c8204c6

2013年06月09日 ⁄ 综合 ⁄ 共 2546字 ⁄ 字号 评论关闭
2007-01-22 14:57
package com.tree.model;

/**
* @author wolf
*
*/
public class TreeModel {

private int classid;

private int parentid;

private String name;

private int level;

public int getLevel() {
return level;
}

public void setLevel(int level) {
this.level = level;
}

public TreeModel(int classid,int parentid,String name){
this.classid = classid;
this.parentid = parentid;
this.name = name;
}

public TreeModel() {
// TODO Auto-generated constructor stub
}

public int getClassid() {
return classid;
}

public void setClassid(int classid) {
this.classid = classid;
}

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

public int getParentid() {
return parentid;
}

public void setParentid(int parentid) {
this.parentid = parentid;
}

}

/**
* @author wolf
* 无限分类
* 本例子是一个示例程序,只有获取分类的功能,对于增加和修改没有实现,没有用到数据库.
*/
package com.tree.bean;

import java.util.ArrayList;
import java.util.Iterator;

import com.tree.model.TreeModel;

/**
* @author wolf
*
*/
public class Tree {

public static void main(String[] args) {
TreeModel[] ts = init();
TreeModel tss = new TreeModel();
ArrayList list = new ArrayList();
list = getAll(0, ts, 0, new ArrayList());
Iterator it = list.iterator();
while (it.hasNext()) {
tss = (TreeModel) it.next();
for (int k = 0; k < tss.getLevel(); k++) {
System.out.print(" ");
}
System.out.println(tss.getName());
}
}

/* 初始化,读取数据,并返回数组 */
public static TreeModel[] init() {
ArrayList list = new ArrayList();
list.add(new TreeModel(0, -1, "世界"));
list.add(new TreeModel(1, 0, "中国"));
list.add(new TreeModel(2, 1, "北京"));
list.add(new TreeModel(3, 2, "朝阳区"));
list.add(new TreeModel(4, 1, "沈阳"));
list.add(new TreeModel(5, 4, "东软"));
list.add(new TreeModel(6, 5, "移动互联网"));
list.add(new TreeModel(7, 3, "望京"));
list.add(new TreeModel(9, 1, "辽宁"));
list.add(new TreeModel(10, 9, "大连"));
list.add(new TreeModel(11, 10, "东软"));
list.add(new TreeModel(12, 11, "0317班"));
TreeModel[] ts = new TreeModel[list.size()];
list.toArray(ts);
return ts;
}

/* 通过classid和数组,返回该classid下的一级分类数组 */
public static TreeModel[] isHave(int id, TreeModel[] ts) {
ArrayList list = new ArrayList();
for (int i = 0; i < ts.length; i++) {
if (ts[i].getParentid() == id) {
list.add(ts[i]);
}
}
TreeModel[] tss = new TreeModel[list.size()];
list.toArray(tss);
return tss;
}

/* 通过classid得到该classid的一个TreeModel对象 */
public static TreeModel getTreeByid(int id, TreeModel[] ts) {
TreeModel tss = new TreeModel();
for (int i = 0; i < ts.length; i++) {
if (ts[i].getClassid() == id) {
tss = ts[i];
}
}
return tss;
}

/*
* 获取所有分类 参数id:这个id是classid 参数ts:所有分类的对象集合 参数level:分类的层次级别
* 参数list:递归到的分类信息存放到该list中
*/
static public ArrayList getAll(int id, TreeModel[] ts, int level,
ArrayList list) {
level++;
TreeModel[] k = isHave(id, ts);
if (id == 0) {
list.add(getTreeByid(id, ts));
}
if (k.length > 0) {
for (int t = 0; t < k.length; t++) {
k[t].setLevel(level);
list.add(k[t]);
getAll(k[t].getClassid(), ts, level, list);
}
}
return list;
}
}

抱歉!评论已关闭.