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 发布