package com.tbxc;
public class Product {
private Integer id;
private String name;
private Integer parentId;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getParentId() {
return parentId;
}
public void setParentId(Integer parentId) {
this.parentId = parentId;
}
}
package com.tbxc;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Random;
public class Test2 {
public static void main(String[] args) {
//生成测试对象
List list = new ArrayList();
Random random = new Random();
for(int i=0;i<1000;i++){
//一级节点
if(i<=10){
Product p = new Product();
p.setId(i);
p.setName("name"+i);
list.add(p);
continue;
}
//二级节点
if(i<=20){
Product p = new Product();
p.setId(i);
p.setName("name"+i);
int max=10;
int min=0;
int s = random.nextInt(max)%(max-min+1) + min;
p.setParentId(s);
list.add(p);
continue;
}
//三级节点
if(i<=30){
Product p = new Product();
p.setId(i);
p.setName("name"+i);
int max=20;
int min=10;
int s = random.nextInt(max)%(max-min+1) + min;
p.setParentId(s);
list.add(p);
continue;
}
//末级节点
Product p = new Product();
p.setId(i);
p.setName("name"+i);
int max=30;
int min=20;
int s = random.nextInt(max)%(max-min+1) + min;
p.setParentId(s);
list.add(p);
}
Iterator iter = list.iterator();
Map> map = new HashMap>();
int i = 1;
while(list.size()>0)
{
//一级节点
if(i==1)
{
while(iter.hasNext())
{
Product p = iter.next();
if(p.getParentId()==null)
{
List list1;
if(map.isEmpty())
{
list1 = new ArrayList();
}else{
list1 = map.get(1);
}
list1.add(p);
iter.remove();
map.put(1, list1);
}
}
//非一级节点
}else{
Iterator iter2 = list.iterator();
while(iter2.hasNext())
{
Product p = iter2.next();
//获取上一节点的所有对象数据
List list2 = map.get(i-1);
for (Product product : list2) {
if(p.getParentId() == product.getId())
{
List list3;
if(map.containsKey(i))
{
list3 = map.get(i);
}else{
list3 = new ArrayList();
}
list3.add(p);
iter2.remove();
map.put(i, list3);
}
}
}
}
i++;
if(i>10){
break;
}
}
System.out.println(map.size());
//System.out.println(list.size());
//System.out.println(map.get(1).size());
for(int j=1;j<10;j++)
{
if(map.containsKey(j))
{
System.out.println(map.get(j).size());
}
}
}
}
java将树状结构数据通过map分级(一种思路)
最新推荐文章于 2023-09-26 13:26:34 发布