2017-10-09 24 views
-2

我有以下類別:的java:轉換對象名單

public class UnidadOrganicaArbol { 

protected long codigo; 
@XmlElement(required = true) 
protected String denominacion; 
protected boolean tieneOficinaRegistro; 
protected int prelacion; 
@XmlElement(required = true) 
protected UnidadesOrganicasArbol subunidades; 

/*getters and setters*/ 
} 

,也有

public class UnidadesOrganicasArbol 
extends ListadoBase 
{ 

protected List<UnidadOrganicaArbol> unidadOrganicaArbol; 


public List<UnidadOrganicaArbol> getUnidadOrganicaArbol() { 
    if (unidadOrganicaArbol == null) { 
     unidadOrganicaArbol = new ArrayList<UnidadOrganicaArbol>(); 
    } 
    return this.unidadOrganicaArbol; 
} 

正如你所看到的,UnidadOrganicaArbol類HASS屬性subunidades這是一個UnidadesOrganicasArbol類,具有List<UnidadOrganicaArbol>屬性。

所以,我有一個UnidadOrganicaArbol類,它包含一個List<UnidadOrganicaArbol>屬性。

Let's說我:

enter image description here

你知道任何一般的算法uoa1(或任何其他UnidadOrganicaArbol對象)及其子轉換成一個列表,我可以保持自己的ID和孩子的父母身份?

我嘗試了好幾種方法,但沒有成功。提前致謝。

+0

所以你SubUnidades還可以進一步含有Unidades的名單?乍看之下,這看起來像可以通過將組成圖案需要解決的問題(參見:https://en.wikipedia.org/wiki/Composite_pattern) – deHaar

+0

你有你的'UnidadesOrganicasArbol'其UnidadOrganicaArbol'的'名單太與名稱混淆嘗試提供通用名稱 – Kathi

+1

你試過了什麼?這是一個簡單的遞歸函數。 – daniu

回答

0
public List<UnidadOrganicaArbol> collectToList(UnidadOrganicaArbol arbol) { 
    List<UnidadOrganicaArbol> result = new ArrayList<>(); 
    result.add(arbol); 
    UnidadesOrganicasArbol children = arbol.getUnidadesOrganicasArbol(); 
    if (children != null) { 
     for (UnidadOrganicaArbol child : children.getUnidadOrganicaArbol()) { 
      result.addAll(collectToList(child)); 
     } 
    } 
    return result; 
} 

將產生上述圖片的列表[\,7,3,6,4,5,1,2]。

+0

非常感謝。有效。 – bentakayze