2011-03-26 9 views

Respuesta

38

Dado que [] es un operador y Java no admite la sobrecarga del operador, no puede usarlo con la Lista. En su lugar, debe utilizar los métodos set(int index, T value) y get(int index), que pueden ser detallados pero proporcionan exactamente la misma funcionalidad.

18

List.get(int) le permite acceder a los elementos utilizando el índice.

+0

Hombre, te amo <3. – Kadaj

2

No, no puedes hacer esto en Java.

+0

@Downvoter Patrick estaba en lo cierto al decir que 'list [5]' no es posible en Java, aunque no mencionó ninguna alternativa. – asgs

+2

@asgs - No soy el "Bajista", pero la respuesta no es útil, en realidad es incorrecta. Sí, "podemos usar el índice para acceder a la Lista" usando 'list.get (int)' o, si realmente * needed *, 'list.toArray() [5]' [:-) –

+0

@Carlos no sabía nada 'toArray()'. Gracias. – asgs

6

Se puede acceder a los elementos de lista usando su índice a través del uso de la get método:

obtener

objeto Get pública (int index)

devoluciones el elemento en la posición especificada en esta lista.

Parámetros: índice - índice del elemento a devolver.

Devuelve: el elemento en la posición especificada en esta lista.

Lanza: IndexOutOfBoundsException - si el índice está fuera de rango (índice < 0 || index> = size()).

Tenga en cuenta que el índice en Listas está basado en 0.

2

No, usted está restringido a List.get (i).

Los corchetes [] se definen en el nivel de sintaxis, no como nombre-método, por lo que no puede anularlos. Se usan solo para arreglos exclusivamente.

Si desea migrar a Scala, un lenguaje más moderno para la JVM, encontrará un acceso unificado a matrices y listas, pero ambos con () paréntesis.

5

Aquí hay muchas buenas respuestas, pero solo quiero señalar que list.get(i) es lo mismo que list[i] solo si la lista se implementa con una matriz (es decir, ArrayList). Si es una LinkedList, realmente no está indexando con get, sino iterando.

tanto, si utiliza get() con la lista de tipo de interfaz, especialmente en un bucle, debe comprobar cómo se implementa, como get() con ArrayList es O (1), mientras que get() con LinkedList es O (n) (mucho más lento).

3

una alternativa al uso get(int) es crear una matriz usando toArray()

List<T> list = ... 

Object[] array = list.toArray(); 

si T es conocidos, toArray(T[]) se puede utilizar para volver T[] en lugar de Object[].
El uso de toArray solo tiene sentido, en lugar de get, si realmente se necesita una matriz (muchos accesos).

Cuestiones relacionadas