1

動作していない別のArrayListからフィルターをかけようとします

私はlistaGrande(bigListのスペイン語)と呼ばれるこのArrayListを持っています。これには、loTengo(iHaveIt)という文字列を持つObjetoというクラスのオブジェクトが含まれています。

loTengo ="Yes"または"yes"であり、それらの単語のみが他にない場合、Objetoとマークされたものは、inventario(inventory)と呼ばれる新しいArrayListを形成する必要があります。

CONFLICTIVEメソッドを使用したクラスは次のとおりです。

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のadd/removeメソッドがあります。

これが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.

    }
}

これは、ダンの提案の私の実装です。私は働いているべきだと思います。そうではありません。それを修正するためのアイデアはありますか?

ありがとう。

4

3 に答える 3

2

次のような意味ですか?:

List<Dice> myInventory = new ArrayList<Dice>();
for (Dice die : bigList) {
    if ("YES".equalsIgnoreCase(die.getHaveIt())) {
        myInventory.add(die);
    }
}
return myInventory;

これがあなたが探しているものであることを願っています。

于 2012-07-19T01:05:33.713 に答える
1

Apache Commons Collectionsを使用するオプションがある場合は、必要に応じて、フィルターまたはselectメソッドの使用を検討してください。

于 2012-07-19T01:22:40.403 に答える
0

これはあなたが探しているものですか?

public class Dice {

    private static ArrayList<String> myInventory;
    private static String haveIt;

    public void setMyInventory() {
        if (haveIt.equals("Yes") || haveIt.equals("yes"))
            myInventory = new ArrayList<String>();
        else
            myInventory = null;
    }

}
于 2012-07-19T01:06:34.753 に答える