java实现遍历树形菜单方法——service层

简介: java实现遍历树形菜单方法——service层

Service接口:

/**  
* @Title: IVoteTreeService.java
* @Package org.Service
* @Description: TODO该方法的主要作用:
* @author A18ccms A18ccms_gmail_com  
* @date 2017-5-6 下午10:42:10
* @version V1.0  
*/
package org.Service;
import java.util.List;
import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
import org.entity.VoteTree;
 /**   
 *    
 * 项目名称:testTree   
 * 类名称:IVoteTreeService   
 * 类描述:   
 * 创建人:Mu Xiongxiong  
 * 创建时间:2017-5-6 下午10:42:10   
 * 修改人:Mu Xiongxiong   
 * 修改时间:2017-5-6 下午10:42:10   
 * 修改备注:   
 * @version    
 *    
 */
public interface IVoteTreeService {
  
  public JSONArray getTreeJson();
  List<VoteTree> treeList();
}


Service实现类:

/**  
* @Title: VoteTreeServiceImpl.java
* @Package org.Service.impl
* @Description: TODO该方法的主要作用:
* @author A18ccms A18ccms_gmail_com  
* @date 2017-5-6 下午10:43:10
* @version V1.0  
*/
package org.Service.impl;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
import org.Service.IVoteTreeService;
import org.dao.IVoteTreeDao;
import org.dao.impl.IVoteTreeDaoImpl;
import org.entity.VoteTree;
import org.junit.Test;
import com.alibaba.fastjson.JSON;
import com.sun.org.apache.xerces.internal.parsers.IntegratedParserConfiguration;
 /**   
 *    
 * 项目名称:testTree   
 * 类名称:VoteTreeServiceImpl   
 * 类描述:   
 * 创建人:Mu Xiongxiong  
 * 创建时间:2017-5-6 下午10:43:10   
 * 修改人:Mu Xiongxiong   
 * 修改时间:2017-5-6 下午10:43:10   
 * 修改备注:   
 * @version    
 *    
 */
public class VoteTreeServiceImpl implements IVoteTreeService {
  IVoteTreeDao voteTreeDao = new IVoteTreeDaoImpl();
  
  
  public JSONArray getTreeJson(){
    Map<String, Object> treeMap = new HashMap<String, Object>();
    Map<String, Object> treejsonMap = new HashMap<String, Object>();
    treeMap.put("id",1);
    treeMap.put("text", "用户");
    treeMap.put("children", treeList());
    JSONArray jsonObject = JSONArray.fromObject(treeMap);
    return jsonObject;
    
  }
  
  
  
  @Override
  public List<VoteTree> treeList() {
    List<VoteTree> nextSubSet = new ArrayList<VoteTree>();
    //最小的level
    Long minLevel =voteTreeDao.minId();  
    //一级目录
    List<VoteTree> friList = voteTreeDao.getFirstLevel(minLevel);
    for (VoteTree voteTree : friList) {
      //根据一级目录查找所有的子集
      voteTree.setChildren(nextSubSet);
      nextSubSet =voteTreeDao.getNextSubSet(voteTree);
    }
    return nextSubSet;
  }
  
}


相关文章
|
12天前
|
存储 Java 程序员
Java基础的灵魂——Object类方法详解(社招面试不踩坑)
本文介绍了Java中`Object`类的几个重要方法,包括`toString`、`equals`、`hashCode`、`finalize`、`clone`、`getClass`、`notify`和`wait`。这些方法是面试中的常考点,掌握它们有助于理解Java对象的行为和实现多线程编程。作者通过具体示例和应用场景,详细解析了每个方法的作用和重写技巧,帮助读者更好地应对面试和技术开发。
53 4
|
23天前
|
Java API
Java 对象释放与 finalize 方法
关于 Java 对象释放的疑惑解答,以及 finalize 方法的相关知识。
43 17
|
12天前
|
存储 Java 开发者
在 Java 中,如何遍历一个 Set 集合?
【10月更文挑战第30天】开发者可以根据具体的需求和代码风格选择合适的遍历方式。增强for循环简洁直观,适用于大多数简单的遍历场景;迭代器则更加灵活,可在遍历过程中进行更多复杂的操作;而Lambda表达式和`forEach`方法则提供了一种更简洁的函数式编程风格的遍历方式。
|
16天前
|
Java 测试技术 Maven
Java一分钟之-PowerMock:静态方法与私有方法测试
通过本文的详细介绍,您可以使用PowerMock轻松地测试Java代码中的静态方法和私有方法。PowerMock通过扩展Mockito,提供了强大的功能,帮助开发者在复杂的测试场景中保持高效和准确的单元测试。希望本文对您的Java单元测试有所帮助。
32 2
|
24天前
|
Java 程序员 测试技术
Java|让 JUnit4 测试类自动注入 logger 和被测 Service
本文介绍如何通过自定义 IDEA 的 JUnit4 Test Class 模板,实现生成测试类时自动注入 logger 和被测 Service。
22 5
|
23天前
|
Java 程序员 编译器
Java|如何正确地在遍历 List 时删除元素
从源码分析如何正确地在遍历 List 时删除元素。为什么有的写法会导致异常,而另一些不会。
18 3
|
24天前
|
Java 开发者
在Java多线程编程中,选择合适的线程创建方法至关重要
【10月更文挑战第20天】在Java多线程编程中,选择合适的线程创建方法至关重要。本文通过案例分析,探讨了继承Thread类和实现Runnable接口两种方法的优缺点及适用场景,帮助开发者做出明智的选择。
16 2
|
18天前
|
Java Spring
JAVA获取重定向地址URL的两种方法
【10月更文挑战第17天】本文介绍了两种在Java中获取HTTP响应头中的Location字段的方法:一种是使用HttpURLConnection,另一种是使用Spring的RestTemplate。通过设置连接超时和禁用自动重定向,确保请求按预期执行。此外,还提供了一个自定义的`NoRedirectSimpleClientHttpRequestFactory`类,用于禁用RestTemplate的自动重定向功能。
|
10天前
|
安全 Java 测试技术
Java并行流陷阱:为什么指定线程池可能是个坏主意
本文探讨了Java并行流的使用陷阱,尤其是指定线程池的问题。文章分析了并行流的设计思想,指出了指定线程池的弊端,并提供了使用CompletableFuture等替代方案。同时,介绍了Parallel Collector库在处理阻塞任务时的优势和特点。
|
6天前
|
安全 Java 开发者
深入解读JAVA多线程:wait()、notify()、notifyAll()的奥秘
在Java多线程编程中,`wait()`、`notify()`和`notifyAll()`方法是实现线程间通信和同步的关键机制。这些方法定义在`java.lang.Object`类中,每个Java对象都可以作为线程间通信的媒介。本文将详细解析这三个方法的使用方法和最佳实践,帮助开发者更高效地进行多线程编程。 示例代码展示了如何在同步方法中使用这些方法,确保线程安全和高效的通信。
25 9