java 树形对象工具类封装

基础的树形对象:
import java.io.Serializable;
import java.util.List;

/**
 * treegrid树形表格基础对象,后续的该类型的对象均继承该对象
 *
 */
public class BaseTreeGrid implements Serializable{

	/**
	 * 
	 */
	private static final long serialVersionUID = -9189631784252440402L;
	
	public String id;//节点id
	
	public String parentId;//节点父id
	
	public String iconCls = "folder";//节点样式,默认即可
	
	public Boolean leaf = true;//是否为叶子节点,true表示是叶子节点,false表示不是叶子节点
	
	public Boolean expanded = true; //是否展开,默认true,展开
	
	public List<BaseTreeGrid> children;//孩子节点


	public BaseTreeGrid() {
		
	}
	
	public BaseTreeGrid(String id, String parentId) {
		this.id=id;
		this.parentId=parentId;
	}

	public String getId() {
		return id;
	}

	public void setId(String id) {
		this.id = id;
	}

	public String getParentId() {
		return parentId;
	}

	public void setParentId(String parentId) {
		this.parentId = parentId;
	}

	public String getIconCls() {
		return iconCls;
	}

	public void setIconCls(String iconCls) {
		this.iconCls = iconCls;
	}

	public Boolean getLeaf() {
		return leaf;
	}

	public void setLeaf(Boolean leaf) {
		this.leaf = leaf;
	}

	public Boolean getExpanded() {
		return expanded;
	}

	public void setExpanded(Boolean expanded) {
		this.expanded = expanded;
	}

	public List<BaseTreeGrid> getChildren() {
		return children;
	}

	public void setChildren(List<BaseTreeGrid> children) {
		this.children = children;
	}
}
import java.util.ArrayList;
import java.util.List;

import com.alibaba.fastjson.JSONArray;
import com.eshore.common.ext.BaseTreeGrid;

/**
 * 将记录list转化为树形list
 * 基于BaseTreeGid类的转换
 *
 */
public class TreeUtils {

	/**
	 * 格式化list为树形list
	 * @param list
	 * @param falg true 表示全部展开,其他 表示不展开
	 * @return
	 */
	public static <T extends BaseTreeGrid> List<T> formatTree(List<T> list, Boolean flag) {

		List<T> nodeList = new ArrayList<T>();  
		for(T node1 : list){  
		    boolean mark = false;  
		    for(T node2 : list){  
		        if(node1.getParentId()!=null && node1.getParentId().equals(node2.getId())){ 
		        	node2.setLeaf(false);
		            mark = true;  
		            if(node2.getChildren() == null) {
		            	node2.setChildren(new ArrayList<BaseTreeGrid>());  
		            }
		            node2.getChildren().add(node1); 
		            if (flag) {
		            	//默认已经全部展开
		            } else{
		            	node2.setExpanded(false);
		            }
		            break;  
		        }  
		    }  
		    if(!mark){  
		        nodeList.add(node1);   
		        if (flag) {
	            	//默认已经全部展开
	            } else{
	            	node1.setExpanded(false);
	            }
		    }  
		}
		return nodeList;
	}
	
	public static void main(String[] args) {
		List<BaseTreeGrid> list = new ArrayList<BaseTreeGrid>();
		BaseTreeGrid root1 = new BaseTreeGrid();
		root1.setId("1");
		BaseTreeGrid child1 = new BaseTreeGrid();
		child1.setId("11");
		child1.setParentId("1");
		BaseTreeGrid child11 = new BaseTreeGrid();
		child11.setId("111");
		child11.setParentId("11");
		BaseTreeGrid root2 = new BaseTreeGrid();
		root2.setId("2");
		BaseTreeGrid child2 = new BaseTreeGrid();
		child2.setId("21");
		child2.setParentId("2");
		list.add(root1);
		list.add(child1);
		list.add(child11);
		list.add(root2);
		list.add(child2);
		List<BaseTreeGrid> treelist = formatTree(list, false);
		String json = JSONArray.toJSONString(treelist);
		System.out.println(json);
	}
	
}



  • 5
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
$(function(){ $.fn.extend({ SimpleTree:function(options){ //初始化参数 var option = $.extend({ click:function(a){ } },options); option.tree=this; /* 在参数对象中添加对当前菜单的引用,以便在对象中使用该菜单 */ option._init=function(){ /* * 初始化菜单展开状态,以及分叉节点的样式 */ this.tree.find("ul ul").hide(); /* 隐藏所有子级菜单 */ this.tree.find("ul ul").prev("li").removeClass("open"); /* 移除所有子级菜单父节点的 open 样式 */ this.tree.find("ul ul[show='true']").show(); /* 显示 show 属性为 true 的子级菜单 */ this.tree.find("ul ul[show='true']").prev("li").addClass("open"); /* 添加 show 属性为 true 的子级菜单父节点的 open 样式 */ }/* option._init() End */ /* 设置所有超链接不响应单击事件 */ this.find("a").click(function(){ $(this).parent("li").click(); return false; }); /* 菜单项 接受单击 */ this.find("li").click(function(){ /* * 当单击菜单项 * 1.触发用户自定义的单击事件,将该 标签中的第一个超链接做为参数传递过去 * 2.修改当前菜单项所属的子菜单的显示状态(如果等于 true 将其设置为 false,否则将其设置为 true) * 3.重新初始化菜单 */ option.click($(this).find("a")[0]); /* 触发单击 */ /* * 如果当前节点下面包含子菜单,并且其 show 属性的值为 true,则修改其 show 属性为 false * 否则修改其 show 属性为 true */ /* if($(this).next("ul").attr("show")=="true"){ $(this).next("ul").attr("show","false"); }else{ $(this).next("ul").attr("show","true"); }*/ /* 初始化菜单 */ option._init(); }); /* 设置所有父节点样式 */ this.find("ul").prev("li").addClass("folder"); /* 设置节点“是否包含子节点”属性 */ this.find("li").find("a").attr("hasChild",false); this.find("ul").prev("li").find("a").attr("hasChild",true); /* 初始化菜单 */ option._init(); }/* SimpleTree Function End */ }); });
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值