2015-01-07 89 views
0

我有這些代碼:如何查找並計算特定類型的空間數量?

public class CentroImpl implements Centro { 

//Atributos 

private String nombre; 
private String direccion; 
private Integer numeroPlantas; 
private Integer numeroSotanos; 
public Set<Espacio> espacio; 

//Constructor 
public CentroImpl(String nombre, String direccion, Integer numeroPlantas, Integer numeroSotanos){ 
    checkPlantas(numeroPlantas); 
    checkSotanos(numeroSotanos); 
    this.nombre = nombre; 
    this.direccion = direccion; 
    this.numeroPlantas = numeroPlantas; 
    this.numeroSotanos = numeroSotanos; 
    this.espacio = new TreeSet<Espacio>(); 
} 

    @Override 
public Set<Despacho> getDespachos() { 

} 

getDespacho應該要經過「Espacios」建築物(炫酷)(地區)的名單,並告訴我,有多少人是Despachos(辦事處)。正如你在Espacio class中看到的那樣,有一種類型被定義。

public class EspacioImpl implements Espacio { 

//Atributos 
private TipoEspacio tipo; 
private String nombre; 
private Integer planta; 
private Integer aforo; 

//Constructores 
public EspacioImpl(TipoEspacio tipo, String nombre, Integer planta, Integer aforo) { 
    checkerAforo(aforo); 
    this.nombre = nombre; 
    this.planta = planta; 
    this.aforo = aforo; 
    this.tipo = tipo; 
} 

但我還沒有學會如何訪問它,我一直沒能找到任何可以理解的東西。感謝您的幫助。

+0

'TipoEspacio'是一個'enum'嗎? – Daniel

+0

是的,它是@丹尼爾 –

+0

我在想這裏有一些設計缺陷。 「Espacio」界面是什麼樣的? – Daniel

回答

1

假設Despacho延伸非裔和TipoEspacio是枚舉:

@Override 
public Set<Despacho> getDespachos() { 
    Set<Despacho> despachos = new HashSet<Despacho>(); 
    for (Espacio e : espacio) { 
     // Not sure, depends on the definition of TipoEspacio 
     if (e.getTipo() == TipoEspacio.DESPACHO && e instanceof Despacho) { 
      despachos.put((Despacho)e); 
     } 
    } 
    return despachos; 
} 
+0

我在放置函數時遇到了問題,你們都會在答案中加入。我需要導入一些東西嗎?不會增加工作betterç? –

+0

@BrickTop我更新了我的答案,它只適用於Despacho延伸Espacio。如果沒有,請向我們展示Despacho(或DespachoImpl)源代碼。 – Thierry

1

這個答案假定您有EspacioImpl叫做espacios的集合,並且enum名稱爲Despacho是Despacho。然後你必須做些什麼numDespachos(如return它)。這也假定EspacioImpl有一個稱爲getTipo的方法。你需要這樣做是因爲tipo成員是private,所以不能在沒有吸氣劑的情況下在課堂外進行訪問。

int numDespachos = 0; 
for(EspacioImpl e : espacios) 
{ 
    if(e.getTipo() == TipoEspacio.Despacho) 
     ++numDespachos; 
} 
+0

謝謝你的回答。我其實想要返回一個despachos espacios列表。我相信上面的答案是這樣的。 –

相關問題