ArrayList <Integer> con el método get / remove

Cuando uso ArrayList en Java, hay algunas cosas que no entiendo. Aquí está mi código de inicialización:

 ArrayList<Integer> list = new ArrayList <Integer> ();
list.add (0);
list.add (1);

a veces necesito eliminar un objeto por su índice:

list.remove (0) // delete the object in the first box

pero a veces quiero eliminar un objeto por su contenido:

list.remove (0) // delete the object HAS Which value of 0

Este código es muy ambiguo. Para aclarar lo que quiero hacer en el código, especifico el tipo de esta manera:

list.remove ((Object) 0) // delete the object which has a value of 0

Si no hago AC, la única forma de saber qué métodos se llaman es poner el puntero del mouse en el método para ver: java.util.ArrayList.remove boolean (Object object)

Java Pero, ¿cómo hace la diferencia? ¿Hay un puntero de método? ¿Hay una manera menos ambigua de hacer esto?

Muchas gracias, perdón por mi inglés.

PD: Debo decir que finalmente usé SparseIntArray pero curiosamente

Respuesta 1

Siempre que haya una ambigüedad en Java (cuando las firmas de múltiples métodos podrían coincidir con los tipos de los parámetros en el momento de la compilación ), usar conversiones para elegir el método correcto es su única opción. Por supuesto, podría convertir los parámetros a variables locales antes de la invocación real, pero esto no lo hace más claro para el lector; en mi opinión, emitir el parámetro directamente donde se usa es la mejor opción para dejar en claro qué método se llama.

Por cierto, la razón por la cual la API es tan ambigua en este caso es que en el momento en que se hizo la API, no había Auto Boxing, por lo que no era posible escribir código ambiguo en primer lugar. Sin embargo, cambiar el método para hacerlo inequívoco habría sido un cambio radical. Dado que almacenar Integer en una lista de arrays no es una gran idea de todos modos la mayoría del tiempo, decidieron dejarnos vivir con esa pequeña molestia.

Respuesta: 2

Si solo le molesta la ambigüedad con el método remove () en Integer ArrayList, puede extender ArrayList para implementar el suyo:

public class MyIntArrayList extends ArrayList<Integer> {

    boolean removeByObject(Integer intObj) {
        return super.remove(intObj);
    }

    Integer removeByIndex(int index) {
        return super.remove(index);
    }

}
Respuesta: 3

Estoy tratando de incluir un botón de donación de PayPal en mi aplicación (al iniciarlo desde un botón de la barra de acción), funciona como debería, pero ... solo muestra PayPalActivity como una ventana emergente muy pequeña, mientras que debería ...

En Java / Processing, quiero probar si una curva bezier se superpone a un círculo, para poder desplazar una de ellas. ¿Hay una manera simple de hacer esto?

Tengo un JMenuItem con un ActionListener, en este ActionListener quiero agregar un GridBagLayout a mi marco (que podría o no tener un panel de contenido aún agregado, para fines de prueba no lo hace) ...

Estoy enfrentando un problema en el contexto de empujar un número entero en la pila en BCEL. Tengo un método _square de someClass, es decir, "mathClass" ilist = new InstructionList (); ilist.append (InstructionConstants ....