JAVA 形成树形结构
通过泛型+反射+加自定义注解,任意实体集合递归形成树形结构
在业务开发过程中经常遇到要把查询到的集合形成树形结构,比如菜单,分类,地区等
其逻辑都是一样的只不过实体类不一样,我这套代码优点是所有能形成树形结构的实体类打上自定义注解就能用,不需要实现什麽接口,不需要麻烦的設置,简单便捷
先上代码
第一个自定义注解TreeId (打在实体类的主键ID上)
import java.lang.annotation.*;
@Target({
ElementType.FIELD})
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface TreeId {
String value() default "";
}
第二个自定义注解TreeParentId(打在实体类的父类ID上)
import java.lang.annotation.*;
@Target({
ElementType.FIELD})
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface TreeParentId{
String value() default "";
}
第三个自定义注解TreeList(打在实体类的集合上)
import java.lang.annotation.*;
@Target({
ElementType.FIELD})
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface TreeParentId{
String value() default "";
}
然后是最重要的工具类TreeUtil
import cn.hutool.core.util.ObjectUtil;
import java.lang.annotation.Annotation;
import java.lang.reflect.Field;
import java.util.Collection;
import java.