sto avendo l'elenco degli oggetti con il bambino genitore di riferimentoNon in grado di creare oggetti annidati in Scala
case class EmployeeLevel(id: Long, name: String, parentId: Long,
item: List[EmployeeLevel])
val employeeList = List(
EmployeeLevel(1L, "Manoj", 0L, Nil),
EmployeeLevel(2L, "Sv", 1L, Nil),
EmployeeLevel(3L, "Cp", 2L, Nil),
EmployeeLevel(4L, "Manju", 3L, Nil))
Come creare struttura ad albero o disporle in un ordine gerarchico come
val employeeList = List(
EmployeeLevel(1L, "Manoj", 0L, List(
EmployeeLevel(2L, "Sv", 1L, List(
EmployeeLevel(3L, "Cp", 2L, List(
EmployeeLevel(4L, "Manju", 3L, Nil))))))))
o questo è il jSON finale che dovrei ottenere
[
{
"id": 1,
"name": "Manoj",
"parentId": 0,
"item": [
{
"id": 2,
"name": "Sv",
"parentId": 1,
"item": [
{
"id": 3,
"name": "Cp",
"parentId": 2,
"item": [
{
"id": 4,
"name": "Manju",
"parentId": 3,
"item": [ ]
}
]
}
]
}
]
}
]
ho provato con questo:
def arrange(employee1:List[EmployeeLevel],accumulator:List[EmployeeLevel]): List[EmployeeLevel] ={
@tailrec def arrange1(employeeLevel:List[EmployeeLevel],accu:List[EmployeeLevel]):List[EmployeeLevel] ={
if(employeeLevel.nonEmpty){
val headd=employeeLevel.head
val taill=employeeLevel.tail
val tt=taill.filter(_.parentId==headd.id)
val qq= List(headd.copy(item = tt))
arrange1(taill,accu++qq)
}else{
accu
}
}
arrange1(employee1,Nil)
}
Ma il suo lavoro per un solo livello
Sarebbe bello aggiungere ciò che si' ho già provato, o sembrerà una domanda "come lo faresti per me". – cchantep
Il codice che hai postato sembra soddisfacente. Qual è il problema? –
voglio ottenere il risultato richiesto utilizzando la funzione ricorsione o riduzione. – cpawali