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 borrar 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 código, especifico el tipo como este:

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

Si no hago AC, la única manera de saber qué métodos se llaman es poner el puntero del ratón 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, lo siento por mi inglés.

PS: Debo decir que finalmente utilicé SparseIntArray pero estoy curiosamente

Para los estatores. La lista # remove (index) devuelve el Objeto eliminado de la lista. La lista # remove (Object) devuelve un booleano.

Sin embargo, en este caso especial. Podrías hacerlo .

  ArrayList<Integer> list = new ArrayList <Integer> (); list.add (0); list.add (1); System.out.println(list.remove(new Integer(0))); 

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

Por cierto la razón por la API es tan ambigua en este caso es que en el momento de la API se hizo, no había Auto Boxing por lo que no era posible escribir código ambiguo en el primer lugar. Sin embargo cambiar el método para que sea inequívoca habría sido un cambio de ruptura. Dado que el almacenamiento de Integer en un arraylist no es tan grande de una idea de todos modos la mayor parte del tiempo, decidieron dejarnos vivir con esa ligera molestia.

Si es sólo la ambigüedad con el método remove () en Integer ArrayList te está molestando, puedes extender el ArrayList para implementar tu propio:

 public class MyIntArrayList extends ArrayList<Integer> { boolean removeByObject(Integer intObj) { return super.remove(intObj); } Integer removeByIndex(int index) { return super.remove(index); } } 

Puede utilizar list.remove(new Integer(0)) para eliminar el objeto

  • Cómo obtener lista de sms como convesations en cada dispositivo Android 2.2+
  • Android Listview mantiene los elementos antiguos después de los cambios del adaptador
  • HashMap con clave de matriz de bytes y valor de cadena - la función containsKey () no funciona
  • Fragmentos múltiples con diferentes listas de expansión para los mismos datos
  • ¿Cómo comprobar todos los servicios en ejecución en android?
  • Java convertir ArrayList a cadena y volver a ArrayList?
  • Elemento de lista simple Comprobado está comprobando varios elementos al hacer clic
  • Cabezal / artículo pegajoso en la vista de reciclaje
  • Evite onMeasure y onLayout cada vez que ImageView Bitmap se establece
  • Android: SortedList con duplicados
  • Subclasificación de SimpleCursorAdapter para incluir convertView para la conservación de la memoria
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.