在java

时间:2015-10-13 14:42:56

标签: java tree

我需要根据JSON数据创建动态树。我有一个类别列表,每个类别都有一个子子类别,其子类别有一个子类别。

我的JSON数据示例是:

    [
      {
        "Id": 110,
        "Name": "Winter Collection",
        "ParentCategoryId": 0,
        "Description": null,
        "DisplayOrder": 0
      },
      {
        "Id": 111,
        "Name": "Hoodies",
        "ParentCategoryId": 110,
        "Description": null,
        "DisplayOrder": 0
      },
      {
        "Id": 113,
        "Name": "Pullover/Sweater",
        "ParentCategoryId": 110,
        "Description": null,
        "DisplayOrder": 0
      }
{
    "Id": 116,
    "Name": "Jacket \u0026 Blazer",
    "ParentCategoryId": 110,
    "Description": null,
    "DisplayOrder": 0
  },
  {
    "Id": 118,
    "Name": "Sweatshirts",
    "ParentCategoryId": 110,
    "Description": null,
    "DisplayOrder": 0
  },
  {
    "Id": 119,
    "Name": "Winter Accessories",
    "ParentCategoryId": 110,
    "Description": null,
    "DisplayOrder": 2
  },
  {
    "Id": 23,
    "Name": "Men\u0027s T-Shirt",
    "ParentCategoryId": 0,
    "Description": null,
    "DisplayOrder": 1
  },
  {
    "Id": 24,
    "Name": "Men\u0027s T-Shirt (Full sleeve)",
    "ParentCategoryId": 23,
    "Description": null,
    "DisplayOrder": -1
  },
  {
    "Id": 79,
    "Name": "Black T-Shirt",
    "ParentCategoryId": 23,
    "Description": null,
    "DisplayOrder": 0
  },
  {
    "Id": 80,
    "Name": "White T-Shirt",
    "ParentCategoryId": 23,
    "Description": null,
    "DisplayOrder": 0
  },
  {
    "Id": 81,
    "Name": "Red T-Shirt",
    "ParentCategoryId": 23,
    "Description": null,
    "DisplayOrder": 0
  },
  {
    "Id": 82,
    "Name": "Blue T-Shirt",
    "ParentCategoryId": 23,
    "Description": null,
    "DisplayOrder": 0
  },
    ...............
    ] 

主要Categories parentid==0Subcategories(子女)的parentIdid Categories的{​​{1}}相同。随后,每个Subcategory都可以保留Child

我需要建一棵树。如果JSON数据返回List<Category>,则最终树将成为此类List(即List<ParentCategory>

public class ParentCategory {
   Category category;
   List<ParentCategory> Subcategories;
}

如何在Java数据结构中表示此树?

1 个答案:

答案 0 :(得分:1)

最简单的方法是通过两次通过列表:

Pass1:创建一个由id键入的类别Map<Integer, ParentCategory>,忽略ParentCategoryId和Subcategories。

Pass2:使用ParentCategoryId查找在Pass1中创建的ParentCategory并添加到它的子类别