嘗試篩選一個ArrayList從另一個工作不嘗試從另一個工作不
過濾一個ArrayList我有此ArrayList稱爲listaGrande(西班牙語爲bigList)。它包含一個名爲Objeto的類,它有一個名爲loTengo(iHaveIt)的字符串。
如果loTengo =「是」或「是」,並且只有那些標記爲Objeto的詞應該組成一個名爲inventario(inventory)的新ArrayList。
下面是類,與衝突性方法:
public class FiltraListas { // ListsFilter.
public String registro; // registry.
public ArrayList<Objeto> listaGrande;
public ArrayList<Objeto> inventario; // CONFLICTIVE by being declared here?
public String loTengo;
public Objeto unObjeto; // oneObject
public FiltraListas(String registro) {
this.registro = registro;
listaGrande = new ArrayList<Objeto>();
this.loTengo = "Yes";
}
public ArrayList<Objeto> setInventario() {
for (Objeto cualquiera : listaGrande){ // cualquiera is Spanish for any.
if("YES".equalsIgnoreCase(cualquiera.getLoTengo())) { // FILTER NOT WORKING.
inventario.add(cualquiera);
}
}
return inventario;
}
類的其餘部分具有getInventario,通過Eclipse將自動生成的getter和setter,並且添加/刪除用於listaGrande方法。
這裏是JUnitTestCase。
public class FiltraListasTest extends TestCase {
private FiltraListas checador;
private Objeto n1;
private Objeto n2;
public void testFiltraListas() {
FiltraListas checa = new FiltraListas("Arranque");
assertEquals("Arranque", checa.registro);
assertTrue(checa.listaGrande instanceof ArrayList);
assertTrue(checa.inventario instanceof ArrayList); // Smooth.
}
public void setup() {
checador = new FiltraListas("Probador"); // Tester.
checador.addToListaGrande(n1); // Two Objeto on
checador.addToListaGrande(n2); // right list.
n1 = new Objeto("Pinzas eléctricas");
n2 = new Objeto("Multímetro");
n1.setLoTengo("yes"); // CONFLICTIVE. Should make setInventario to work.
n2.setLoTengo("Pronto lo compraré"); // I'll buy it soon.
}
public void testListaGrande() {
setup();
ArrayList<Objeto> todasCosas = checador.getListaGrande();
ArrayList<Objeto> pruebaInventario = checador.getInventario();
assertEquals(2, todasCosas.size());
assertEquals(1, pruebaInventario.size()); // Probes to be wrong.
}
}
這是我執行丹的建議。我認爲應該工作。但事實並非如此。任何想法解決它?
謝謝。
謝謝,ThiefMaster和Flexo。 – Dieglock 2012-07-26 17:02:45