菜单树结构工具列表数据的编译跟反编译

废话不多说,直接先上工具类!


import java.util.ArrayList;
import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;

import main.java.com.skyi.ietm.po.Tree;
/**
 *  菜单树结构工具
 * @author yuyuyu
 *
 */
public class MenuTreeUtil {

	public static Map<String,Object> mapArray = new LinkedHashMap<String, Object>(); 
	  public List<Tree> menuCommon; 
	  public List<Object> list = new ArrayList<Object>(); 
	   /**
	    * 将list转成结构树形态
	    * @param menu
	    * @return
	    */
	  public  List<Object> menuList(List<Tree> menu){   
		
	    this.menuCommon = menu; 
	    for (Tree x : menu) {   
	    	
	      Map<String,Object> mapArr = new LinkedHashMap<String, Object>(); 
	      if(x.getpId().equals("0")){ 

	        mapArr.put("id", x.getId()); 
	        mapArr.put("name", x.getName());  
	        mapArr.put("pid", x.getpId());  
	        mapArr.put("childList", menuChild(x.getId()));  
	        list.add(mapArr); 
	      } 
	    }   
	    //list.get(0)

	    return list; 
	  } 
	   /**
	    * 添加子节点,配合menuList使用,一般不单独调用
	    * @param id
	    * @return
	    */
	  public List<?> menuChild(String id){ 

	    List<Object> lists = new ArrayList<Object>(); 
	    for(Tree a:menuCommon){ 

	      Map<String,Object> childArray = new LinkedHashMap<String, Object>(); 
	      if(a.getpId().equals(id)){ 

	        childArray.put("id", a.getId()); 
	        childArray.put("name", a.getName()); 
	        childArray.put("pid", a.getpId()); 
	        childArray.put("childList", menuChild(a.getId()));
	        lists.add(childArray); 
	      } 
	    } 

	    return lists; 
	  } 
	  int sid=0;
	  List<Tree> lll=new ArrayList<Tree>();
	  /**
	   * 将结构树形态转成list		
	   * @param menuList	结构树列表
	   * @param scid		初始父级ID填0
	   * @param ssid		初始ID填1
	   * @return
	   */
	  public  List<Tree> compileList(List<Object> menuList,String scid,String ssid){
			
			sid=Integer.parseInt(ssid);
			 for (Object o : menuList) {
				
		    	  Map<String,Object> m=(Map<String, Object>) o;
		    	 
		    	  String pid=(String) m.get("pid");
		    	  Tree e=new Tree();
		    	  e.setId(""+sid);
		    	  sid++;
		    	  e.setName((String) m.get("name"));
		    	  e.setpId(scid);
		    	  
		    	  lll.add(e);
		    	  List<Object> li=(List<Object>) m.get("childList");
		    	
		    	  if(li.size()>0){
		    		  
		    		  compileList(li,e.getId(),sid+"");
		    	  }
		      	}
			 
			 return lll;
		 }
}
具体的实体类很简单,工具类中也有用到,阅读一下代码就知道了,就不贴出来了!


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值