ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

将List对象列表转为树形结构

2022-06-25 12:32:57  阅读:127  来源: 互联网

标签:socialTagList List SocialTag 列表 socialTag 树形 import new


1、SocialTag.java

package com.nijia.vip.social.entity;

import java.util.ArrayList;
import java.util.List;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.nijia.base.entity.BaseEntity;

import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

/**
 * 社交--个人标签(SocialTag)表实体类
 *
 * @author whp
 * @since 2022-06-23 14:15:53
 */
@SuppressWarnings("serial")
@Data
public class SocialTag extends BaseEntity {
    private static final long serialVersionUID = 1L;

    @TableId(value = "id", type = IdType.ASSIGN_ID)
    /**
     * 主键
     */
    @ApiModelProperty("主键")
    private Long id;

    /**
     * 标签名称
     */
    @ApiModelProperty("标签名称")
    private String tagName;

    /**
     * 父级id
     */
    @ApiModelProperty("父级id")
    private Long parentId;

    /**
     * 标签等级【1-1级,2-2级】
     */
    @ApiModelProperty("标签等级【1-1级,2-2级】")
    private Integer levelNo;

    /**
     * 排序号
     */
    @ApiModelProperty("排序号")
    private Integer sortNo;

    /**
     * 可用状态【1-可用,0-不可用】
     */
    @ApiModelProperty("可用状态【1-可用,0-不可用】")
    private Integer enableFlag;

    /**
     * 删除标识【1-删除,0-正常】
     */
    @ApiModelProperty("删除标识【1-删除,0-正常】")
    private Integer deleteFlag;

    @TableField(exist=false)
    private List<SocialTag> childSocialTagList = new ArrayList<SocialTag>();


}

 

2、SocialTagListToTreeTest.java

package com.nijia.vip.service;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;

import org.apache.commons.collections4.CollectionUtils;

import com.nijia.test.BaseTest;
import com.nijia.vip.social.entity.SocialTag;

import io.geekidea.springbootplus.framework.util.JavaJsonConvert;


public class SocialTagListToTreeTest extends BaseTest {
    
     public static void main(String[] args) {
         List<SocialTag> resultList = convertListToTree(initData());
         System.out.println(JavaJsonConvert.javaToJson(resultList));
    }

    
     /**
      * 将List对象列表转为树形结构
      * 
      * @param socialTagList
      * @return
      */
    private static List<SocialTag> convertListToTree(List<SocialTag> socialTagList) {
        List<SocialTag> resultList = new ArrayList<SocialTag>();
        if(CollectionUtils.isEmpty(socialTagList)) {
            return resultList;
        }
        
        //List 转为 Map
         Map<Long, SocialTag> socialTagMap = socialTagList.stream().collect(Collectors.toMap(SocialTag::getId, item -> item));
         for(SocialTag socialTag : socialTagList) {
             SocialTag parentSocialTag = socialTagMap.get(socialTag.getParentId());
             //该节点为空,说明是顶级节点
             if(parentSocialTag == null) {
                 // 将顶级节点加入结果集中
                 resultList.add(socialTag);
                 continue;
             }
             
             // 把自己加到父节点对象里面去
             parentSocialTag.getChildSocialTagList().add(socialTag);
         }
         
        return resultList;
    }

    private static List<SocialTag> initData() {
        List<SocialTag> socialTagList = new ArrayList<SocialTag>();
        SocialTag socialTag = new SocialTag();
        socialTag.setId(1L);
        socialTag.setTagName("Java");
        socialTag.setParentId(0L);
        //标签等级【1-1级,2-2级】
        socialTag.setLevelNo(1);
        socialTag.setCreateTime(new Date());
        socialTagList.add(socialTag);
        
        socialTag = new SocialTag();
        socialTag.setId(10L);
        socialTag.setTagName("Springboot");
        socialTag.setParentId(1L);
        //标签等级【1-1级,2-2级】
        socialTag.setLevelNo(2);
        socialTag.setCreateTime(new Date());
        socialTagList.add(socialTag);
        
        socialTag = new SocialTag();
        socialTag.setId(11L);
        socialTag.setTagName("SpringCloud");
        socialTag.setParentId(1L);
        //标签等级【1-1级,2-2级】
        socialTag.setLevelNo(2);
        socialTag.setCreateTime(new Date());
        socialTagList.add(socialTag);
        
        socialTag = new SocialTag();
        socialTag.setId(2L);
        socialTag.setTagName("DB");
        socialTag.setParentId(0L);
        //标签等级【1-1级,2-2级】
        socialTag.setLevelNo(1);
        socialTag.setCreateTime(new Date());
        socialTagList.add(socialTag);
        
        socialTag = new SocialTag();
        socialTag.setId(20L);
        socialTag.setTagName("Mysql");
        socialTag.setParentId(2L);
        //标签等级【1-1级,2-2级】
        socialTag.setLevelNo(2);
        socialTag.setCreateTime(new Date());
        socialTagList.add(socialTag);
        
        socialTag = new SocialTag();
        socialTag.setId(21L);
        socialTag.setTagName("Oracle");
        socialTag.setParentId(2L);
        //标签等级【1-1级,2-2级】
        socialTag.setLevelNo(2);
        socialTag.setCreateTime(new Date());
        socialTagList.add(socialTag);
        
        socialTag = new SocialTag();
        socialTag.setId(3L);
        socialTag.setTagName("JS");
        socialTag.setParentId(0L);
        //标签等级【1-1级,2-2级】
        socialTag.setLevelNo(1);
        socialTag.setCreateTime(new Date());
        socialTagList.add(socialTag);
        
        socialTag = new SocialTag();
        socialTag.setId(30L);
        socialTag.setTagName("VUE");
        socialTag.setParentId(3L);
        //标签等级【1-1级,2-2级】
        socialTag.setLevelNo(2);
        socialTag.setCreateTime(new Date());
        socialTagList.add(socialTag);
        
        return socialTagList;
    }

   
}

 

标签:socialTagList,List,SocialTag,列表,socialTag,树形,import,new
来源: https://www.cnblogs.com/linjiqin/p/16411116.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有