Estoy usando ArrayList<String>y agrego datos en índices específicos, ¿cómo puedo verificar si existe un índice específico?
¿Debería simplemente get()comprobar el valor? ¿O debería esperar una excepción? ¿Hay otra manera?
Actualizar
Gracias por sus respuestas, pero debido a que solo agrego cosas en índices específicos, la longitud de la lista no me mostrará cuáles están disponibles.

get()comprobarlonull, pero no confíes en las excepciones. Considere usar java.sun.com/j2se/1.4.2/docs/api/java/util/Hashtable.htmlHashTableen su lugarRespuestas:
El método
arrayList.size()devuelve el número de elementos de la lista, por lo que si el índice es mayor o igual quesize(), no existe.fuente
size()" ya que es un índice de base cero.index = 0y milist.size() == 0también. así que la primera vez que lo verifique será cierto y prepararé la lista para hacer cosas. pero la próxima vez en ese índice, mi índice seguirá estandoindex = 0y ahora estoy reinicializando ese elemento en la lista cuando se suponía que debía estar haciendo cosas. El primer pensamiento es&&una segunda condición comolist.get(index) == nullpero que no funciona es por eso que hay preguntas como estaSi bien recibió una docena de sugerencias sobre cómo usar el tamaño de su lista, que funciona para listas con entradas lineales, nadie pareció leer su pregunta.
Si agrega entradas manualmente en diferentes índices, ninguna de estas sugerencias funcionará, ya que debe verificar un índice específico.
Usar if (list.get (index) == null) tampoco funcionará, ya que get () genera una excepción en lugar de devolver null.
Prueba esto:
Aquí se agrega una nueva entrada si el índice no existe. Puede modificarlo para hacer algo diferente.
fuente
try/catchpara este tipo de trabajo, ralentizará su programa en un 50% o tal vez más ... la comprobación de errores se agrega como una correa a su código existente para ralentizarlo ... mejor evitarlo en áreas críticas. Verificarlengthen este caso es lo mejor que puede hacer, yaindexque siempre será menor que lo anteriorlength, los viejos seindexcambiarán y se convertirán en nuevosindexsi los usaremove, por eso la verificación de reglas paralengthsiempre funcionará.Esto es lo que necesitas ...
¿Por qué no usar una matriz vieja y simple? El acceso indexado a una lista es un olor a código, creo.
fuente
Por lo general, solo verifico si el índice es menor que el tamaño de la matriz
Si también le preocupa que el índice sea un valor negativo, use lo siguiente
fuente
Con respecto a su actualización (que probablemente debería ser otra pregunta). Debe usar una matriz de estos objetos en lugar de una ArrayList, por lo que simplemente puede verificar el valor para nulo:
Mejores prácticas
Si no tiene cientos de entradas en su matriz, debería considerar organizarla como una clase para deshacerse de los números mágicos 3,8, etc.
Controlar el flujo mediante la excepción es una mala práctica.
fuente
Dado que
java-9existe una forma estándar de verificar si un índice pertenece a la matriz - Objects # checkIndex () :fuente
of()El método también se agrega en Java 9 a la lista de clases : docs.oracle.com/javase/9/docs/api/java/util/List.html#of--Puede verificar el tamaño de un
ArrayListusando elsize()método. Esto devolverá el índice máximo +1fuente
una forma sencilla de hacer esto:
fuente
Prueba rápida y sucia para determinar si existe un índice o no. en su implementación reemplazar lista Con su lista que está probando.
o para ArrayLists bidimensionales ...
fuente
.lengthlo tiene,list.size()pero no es gran cosa. Me equivoco así todo el tiempo, jaja, confío en el compilador para guiarme en eso. Probablemente estaba pensando en matrices primitivasSi su índice es menor que el tamaño de su lista, entonces existe, posiblemente con
nullvalor. Si el índice es más grande, puede llamarensureCapacity()para poder usar ese índice.Si desea verificar si un valor en su índice es
nullo no, llameget()fuente
Puede verificar el tamaño de la matriz.
fuente