此工具类支持如下功能点:
1、平级数据递归处理成树数据
2、支持设定子级集合名称
3、支持设定多个排序字段
4、支持返回某个节点下的子级集合树数据
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import org.apache.commons.lang3.StringUtils;
import java.util.Comparator;
import java.util.Optional;
import java.util.stream.Collectors;
public class HandleToTreeUtils {
public static JSonArray handleToTree(JSonArray dataArr){
JSonArray resultJson = new JSonArray();
recursionHandleToTree(resultJson,dataArr,null,null);
return resultJson;
}
public static JSonArray handleToTree(JSonArray dataArr,String curId){
JSonArray resultJson = new JSonArray();
recursionHandleToTree(resultJson,dataArr,curId,null);
return resultJson;
}
public static JSonArray handleToTree(JSonArray dataArr,Object... sortObjs){
JSonArray resultJson = new JSonArray();
recursionHandleToTree(resultJson,dataArr,null,null,sortObjs);
return resultJson;
}
public static JSonArray handleToTree(JSonArray dataArr,String curId,String childsName){
JSonArray resultJson = new JSonArray();
recursionHandleToTree(resultJson,dataArr,curId,childsName);
return resultJson;
}
public static JSonArray handleToTree(JSonArray dataArr,String curId,Object... sortObjs){
JSonArray resultJson = new JSonArray();
recursionHandleToTree(resultJson,dataArr,curId,null,sortObjs);
return resultJson;
}
public static JSonArray handleToTree(JSonArray dataArr,String curId,String childsName,Object... sortObjs){
JSonArray resultJson = new JSonArray();
recursionHandleToTree(resultJson,dataArr,curId,childsName,sortObjs);
return resultJson;
}
public static void handleToTree(JSonArray resultJson, JSonArray dataArr){
recursionHandleToTree(resultJson,dataArr,null,null);
}
public static void handleToTree(JSonArray resultJson, JSonArray dataArr,String curId){
recursionHandleToTree(resultJson,dataArr,curId,null);
}
public static void handleToTree(JSonArray resultJson, JSonArray dataArr,Object... sortObjs){
recursionHandleToTree(resultJson,dataArr,null,null,sortObjs);
}
public static void handleToTree(JSonArray resultJson, JSonArray dataArr,String curId,String childsName){
recursionHandleToTree(resultJson,dataArr,curId,childsName);
}
public static void handleToTree(JSonArray resultJson, JSonArray dataArr,String curId,Object... sortObjs){
recursionHandleToTree(resultJson,dataArr,curId,null,sortObjs);
}
public static void handleToTree(JSonArray resultJson, JSonArray dataArr,String curId,String childsName,Object... sortObjs){
recursionHandleToTree(resultJson,dataArr,curId,childsName,sortObjs);
}
private static void recursionHandleToTree(JSonArray resultJson, JSonArray dataArr, String curId, String childsName,Object... sortObjs){
if((null!=dataArr)&&(0 {
if(null!=d){
JSonObject dObj = (JSONObject) d;
if((null!=dObj)&&(dObj.containsKey("id"))&&(dObj.containsKey("parentId"))&&(StringUtils.equals(dObj.getString("parentId"),curId))){
return true;
}
}
return false;
})
.sorted(new DataSortComparator(sortObjs))
.collect(Collectors.toCollection(JSONArray::new));
if((null!=childJson)&&(0 {
if(null!=d){
JSonObject dObj = (JSONObject) d;
if((null!=dObj)&&(dObj.containsKey("id"))&&(StringUtils.isNotBlank(dObj.getString("id")))){
return true;
}
}
return false;
})
.sorted(new DataSortComparator(sortObjs))
.collect(Collectors.toCollection(JSONArray::new));
dataObj.put(((StringUtils.isNotBlank(childsName))?childsName:"childs"),levelTwoJson);
}else{
dataObj.put(((StringUtils.isNotBlank(childsName))?childsName:"childs"),new JSonArray());
}
//保存当前对象到结果集
resultJson.add(dataObj);
}
}
}
}
}else{
JSonObject dataObj =null;
JSonObject topObj =null;
Optional 


