TreeUtils工具類一行代碼實(shí)現(xiàn)列表轉(zhuǎn)樹 實(shí)戰(zhàn)Java8 三級菜單 三級分類 附視頻

一、序言

在日常一線開發(fā)過程中,總有列表轉(zhuǎn)樹的需求,幾乎是項(xiàng)目的標(biāo)配,比方說做多級菜單、多級目錄、多級分類等,有沒有一種通用且跨項(xiàng)目的解決方式呢?幫助廣大技術(shù)朋友給業(yè)務(wù)瘦身,提高開發(fā)效率。

本文將基于Java8的Lambda 表達(dá)式和Stream等知識,使用TreeUtils工具類實(shí)現(xiàn)一行代碼完成列表轉(zhuǎn)樹這一通用型需求。本文有配套視頻,傳送門直達(dá)。

二、實(shí)戰(zhàn)編碼

1、引入坐標(biāo)

本坐標(biāo)地址包含TreeUtils工具類方法,已經(jīng)發(fā)布到Maven中央倉庫,建議使用最新的版本號,本文法布施版本是1.5.8

學(xué)習(xí)源碼的朋友,源碼直通車

<dependency>
    <groupId>xin.altitude.cms</groupId>
    <artifactId>ucode-cms-common</artifactId>
    <version>1.5.8</version>
</dependency>
2、實(shí)現(xiàn)接口

列表實(shí)體類實(shí)現(xiàn)ITreeEntity并實(shí)現(xiàn)抽象方法。

/**
 * 類別表
 */
@Data
@NoArgsConstructor
@AllArgsConstructor
@TableName(value = "bu_category")
public class Category implements ITreeEntity<String> {
    private static final long serialVersionUID = 1L;
    @TableId(type = IdType.AUTO)
    private String id;
    private String name;
    private String parentId;
}
3、調(diào)用TreeUtils工具類

在服務(wù)層調(diào)用TreeUtils工具類,一行代碼完成轉(zhuǎn)換。

public List<TreeNode<String>> selectCategoryList2() {
    List<Category> list = this.list();
    // 一行代碼實(shí)現(xiàn)列表轉(zhuǎn)樹結(jié)構(gòu) 通用型代碼 能夠跨項(xiàng)目使用 業(yè)務(wù)解藕
    return TreeUtils.createNode(list, "000000");
}
4、效果展示

原始列表數(shù)據(jù)

{
  "code": 200,
  "msg": "操作成功",
  "data": [
    {
      "id": "310000",
      "name": "電子商務(wù)",
      "parentId": "000000"
    },
    {
      "id": "310100",
      "name": "大宗商品",
      "parentId": "310000"
    },
    {
      "id": "310101",
      "name": "大宗商品綜合",
      "parentId": "310100"
    },
    {
      "id": "310102",
      "name": "鋼鐵類電商",
      "parentId": "310100"
    }
  ]
}

樹狀層次數(shù)據(jù)

{
  "code": 200,
  "msg": "操作成功",
  "data": [
    {
      "id": "310000",
      "name": "電子商務(wù)",
      "childList": [
        {
          "id": "310100",
          "name": "大宗商品",
          "childList": [
            {
              "id": "310101",
              "name": "大宗商品綜合",
              "childList": []
            },
            {
              "id": "310102",
              "name": "鋼鐵類電商",
              "childList": []
            }
          ]
        }
      ]
    }
  ]
}

三、小結(jié)

通過一個小小的高頻業(yè)務(wù)場景,抽離業(yè)務(wù)共性,屏蔽業(yè)務(wù)細(xì)節(jié),實(shí)現(xiàn)了通用型業(yè)務(wù)邏輯的編碼。

希望廣大技術(shù)朋友在完成日常開發(fā)工作的前提下,能夠進(jìn)一步打磨代碼,感受編程之美。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容