导入依赖
org.projectlombok
lombok
true
com.alibaba
fastjson
1.2.58
基础类
import lombok.Data;
import java.util.List;
@Data
public class DemoTata {
private String id;
private String pid;
private List sub;
}
初始化数据(模拟数据)
List list = new ArrayList<>();
DemoTata demoTata1 = new DemoTata();
demoTata1.setId("1");
demoTata1.setPid("0");
list.add(demoTata1);
DemoTata demoTata2 = new DemoTata();
demoTata2.setId("2");
demoTata2.setPid("1");
list.add(demoTata2);
DemoTata demoTata3 = new DemoTata();
demoTata3.setId("3");
demoTata3.setPid("2");
list.add(demoTata3);
将类生成上级id为键值的map集合
public void generationLevel(Map> mapData,List list){
for(int i = 0 ; i < list.size() ; i++){
DemoTata demoTata = list.get(i);
String id = demoTata.getId();
String pid = demoTata.getPid();
List pidList = mapData.get(pid);
if(pidList == null){
pidList = new ArrayList<>();
}
pidList.add(demoTata);
mapData.put(pid,pidList);
}
}
生成树形Map集合
Map> tmp_mapData = new HashMap<>();
Set>> entries = mapData.entrySet();
for(Map.Entry> entry : entries){
List entryValue = entry.getValue();
List temp_demoTatas = JSONArray.parseArray(JSON.toJSONString(entryValue), DemoTata.class);
for(int i = 0 ; i < temp_demoTatas.size() ; i++){
DemoTata demoTata = temp_demoTatas.get(i);
if( mapData.get(demoTata.getId()) != null){
demoTata.setSub(mapData.get(demoTata.getId()));
temp_demoTatas.set(i,demoTata);
}
}
tmp_mapData.put(entry.getKey(), temp_demoTatas);
}
完整代码
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import org.junit.jupiter.api.Test;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;
public class DemoTest {
@Test
void demotestLeve() {
List list = new ArrayList<>();
DemoTata demoTata1 = new DemoTata();
demoTata1.setId("1");
demoTata1.setPid("0");
list.add(demoTata1);
DemoTata demoTata2 = new DemoTata();
demoTata2.setId("2");
demoTata2.setPid("1");
list.add(demoTata2);
DemoTata demoTata3 = new DemoTata();
demoTata3.setId("3");
demoTata3.setPid("2");
list.add(demoTata3);
Map> mapData = new HashMap<>();
Map submapData = new HashMap<>();
generationLevel(mapData, list);
Map> tmp_mapData = new HashMap<>();
Set>> entries = mapData.entrySet();
for(Map.Entry> entry : entries){
List entryValue = entry.getValue();
List temp_demoTatas = JSONArray.parseArray(JSON.toJSONString(entryValue), DemoTata.class);
for(int i = 0 ; i < temp_demoTatas.size() ; i++){
DemoTata demoTata = temp_demoTatas.get(i);
if( mapData.get(demoTata.getId()) != null){
demoTata.setSub(mapData.get(demoTata.getId()));
temp_demoTatas.set(i,demoTata);
}
}
tmp_mapData.put(entry.getKey(), temp_demoTatas);
}
System.out.println("list:========>"+JSON.toJSONString(list));
System.out.println("mapData:========>"+JSON.toJSONString(mapData));
System.out.println("tmp_mapData:========>"+JSON.toJSONString(tmp_mapData));
}
public void generationLevel(Map> mapData,List list){
for(int i = 0 ; i < list.size() ; i++){
DemoTata demoTata = list.get(i);
String id = demoTata.getId();
String pid = demoTata.getPid();
List pidList = mapData.get(pid);
if(pidList == null){
pidList = new ArrayList<>();
}
pidList.add(demoTata);
mapData.put(pid,pidList);
}
}
}
打印结果