mysql遞歸搜索再之前得原創文檔裏已經寫明瞭,這個網上比較多。
直接進入正題:原創手寫反遞歸
package com.kb.nxccims.common.util;
import java.util.ArrayList;
import java.util.List;
import java.util.List;
import com.kb.nxccims.expandmodel.UnitVO;
/**
* @author 葉成浪
* @time 2018年7月12日 - 上午11:06:06
* @email [email protected]
**/
public class UnitRecursionUtils {
* @author 葉成浪
* @time 2018年7月12日 - 上午11:06:06
* @email [email protected]
**/
public class UnitRecursionUtils {
private UnitRecursionUtils() {
}
}
private static List<Long> rList = null;
private static UnitRecursionUtils unitRecursionUtils = null;
public static List<Long> getInstance(List<UnitVO> list) {
if (rList == null) {
rList = new ArrayList<Long>();
}
synchronized (rList) {
unitRecursionUtils = new UnitRecursionUtils();
return unitRecursionUtils.getUnitList(list);
}
}
if (rList == null) {
rList = new ArrayList<Long>();
}
synchronized (rList) {
unitRecursionUtils = new UnitRecursionUtils();
return unitRecursionUtils.getUnitList(list);
}
}
// YCL遞歸查詢下級單位ID
private List<Long> getUnitList(List<UnitVO> list) {
if (!rList.isEmpty()) {
return rList;
}
private List<Long> getUnitList(List<UnitVO> list) {
if (!rList.isEmpty()) {
return rList;
}
for (int i = 0; i < list.size(); i++) {
rList.add(list.get(i).getId());
uVO(list.get(i).getuList());
}
return rList;
rList.add(list.get(i).getId());
uVO(list.get(i).getuList());
}
return rList;
}
// YCL遞歸循環下級所有ID
private static List<UnitVO> uVO(List<UnitVO> uvo) {
List<UnitVO> list2 = new ArrayList<UnitVO>();
for (int i = 0; i < uvo.size(); i++) {
rList.add(uvo.get(i).getId());
if (uvo.get(i).getuList().isEmpty()) {
return null;
} else {
list2.addAll(uvo.get(i).getuList());
}
}
if (uvo.size() <= 0) {
return null;
}
private static List<UnitVO> uVO(List<UnitVO> uvo) {
List<UnitVO> list2 = new ArrayList<UnitVO>();
for (int i = 0; i < uvo.size(); i++) {
rList.add(uvo.get(i).getId());
if (uvo.get(i).getuList().isEmpty()) {
return null;
} else {
list2.addAll(uvo.get(i).getuList());
}
}
if (uvo.size() <= 0) {
return null;
}
return uVO(list2);
}
}
}
}