package com.prophesy.util;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.URL;
import java.net.URLConnection;
import java.util.ArrayList;
import java.util.List;
import java.util.UUID;
/**
* @Author: Alex
* @ClassName: CommonTreeUtil
* @Description: 通用List转Tree
* @Date: 2020/7/31 17:42
* @Version: 1.0
*/
public class CommonTreeUtil {
/**
- listToTree
- <p>方法说明<p>
- 将JSONArray数组转为树状结构
- @param arr 需要转化的数据
- @param id 数据唯一的标识键值
- @param pid 父id唯一标识键值
- @param child 子节点键值
- @return JSONArray
*/
public static JSONArray listToTree(JSONArray arr, String id, String pid, String child){
JSONArray r = new JSONArray();
JSONObject hash = new JSONObject();
//将数组转为Object的形式,key为数组中的id
for(int i=0;i<arr.size();i++){
JSONObject json = (JSONObject) arr.get(i);
hash.put(json.getString(id), json);
}
//遍历结果集
for(int j=0;j<arr.size();j++){
//单条记录
JSONObject aVal = (JSONObject) arr.get(j);
//在hash中取出key为单条记录中pid的值
JSONObject hashVP = (JSONObject) hash.get(aVal.get(pid).toString());
//如果记录的pid存在,则说明它有父节点,将她添加到孩子节点的集合中
if(hashVP!=null){
//检查是否有child属性
if(hashVP.get(child)!=null){
JSONArray ch = (JSONArray) hashVP.get(child);
ch.add(aVal);
hashVP.put(child, ch);
}else{
JSONArray ch = new JSONArray();
ch.add(aVal);
hashVP.put(child, ch);
}
}else{
r.add(aVal);
}
}
return r;
}
public static String addZero(String str, int strLength) {
int strLen = str.length();
StringBuffer sb = null;
while (strLen < strLength) {
sb = new StringBuffer();
sb.append(str).append("0");//右补0
str = sb.toString();
strLen = str.length();
}
return str;
}
/**
* 自动生成32位的UUid,对应数据库的主键id进行插入用。
* @return
*/
public static String getUUID() {
/*UUID uuid = UUID.randomUUID();
String str = uuid.toString();
// 去掉"-"符号
String temp = str.substring(0, 8) + str.substring(9, 13)
+ str.substring(14, 18) + str.substring(19, 23)
+ str.substring(24);
return temp;*/
return UUID.randomUUID().toString().replace("-", "");
}
// getData方法
public static String httpGetData(String urlStr) {
String DEFAULT_ENCODING = "UTF-8";
BufferedReader reader = null;
StringBuilder sb = new StringBuilder();
try {
URL url = new URL(urlStr.trim());
URLConnection conn = url.openConnection();
conn.setDoOutput(true);
// conn.setConnectTimeout(CONNECT_TIMEOUT);
// conn.setReadTimeout(CONNECT_TIMEOUT);
conn.connect();
reader = new BufferedReader(new InputStreamReader(conn.getInputStream(), DEFAULT_ENCODING));
String line = null;
while ((line = reader.readLine()) != null) {
sb.append(line);
sb.append("\r\n");
}
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
if (reader != null)
reader.close();
} catch (IOException e) {
e.printStackTrace();
}
}
return sb.toString();
}
}
树形结构Utils
于 2022-04-28 11:53:24 首次发布
这是一个Java工具类,包含将JSONArray转换为树状结构的方法`listToTree`,用于处理列表数据的层级关系。同时,类中还提供了生成32位无横线的UUID字符串方法`getUUID`,以及从URL获取数据的`httpGetData`方法。适用于数据处理和API交互场景。
摘要由CSDN通过智能技术生成