Учитывая формат в конце вопроса, как лучше всего получить имя верхнего уровня для данного элемента? Имена верхнего уровня - это имена с parentId = 1.
def getTopLevel(name: String): String = {
// Environment(150) -> Environment(150) - since its parentId is 1
// Assassination -> Security - since Assassination(12) -> Terrorism(10) -> Security(2)
}
Вот мой текущий подход, но есть ли что-то лучше?
unmapped = Categories.size
L oop через этот список до тех пор, пока все еще не будут отображены элементы.
- построить карту (Int, String) для верхних уровней.
- построить карту (Int, Int) - которая сопоставляет идентификатор с идентификатором верхнего уровня.
- отслеживать несопоставленные элементы
при выходе из l oop я могу использовать обе карты, чтобы выполнить работу.
[
{
"name": "Destination Overview",
"id": 1,
"parentId": null
},
{
"name": "Environment",
"id": 150,
"parentId": 1
},
{
"name": "Security",
"id": 2,
"parentId": 1
},
{
"name": "Armed Conflict",
"id": 10223,
"parentId": 2
},
{
"name": "Civil Unrest",
"id": 21,
"parentId": 2
},
{
"name": "Terrorism",
"id": 10,
"parentId": 2
},
{
"name": "Assassination",
"id": 12,
"parentId": 10
}
]