Saltar al contenido

Groovy- Diferencia entre List, ArrayList y Object Array

Solución:

Si, un Array es una estructura de datos con un tamaño fijo. Se declara que tiene un tipo que describe qué elementos puede contener, ese tipo es covariante (ver aquí para covariante vs contravariante). los Array conoce su tipo en tiempo de ejecución y trata de poner cualquier cosa inapropiada en el Array resultará en una excepción.

En Groovy, las matrices no son realmente idiomáticas debido a que son de bajo nivel e inflexibles (tamaño fijo). Son compatibles con la interoperación con Java. Normalmente, las personas que utilizan Groovy prefieren List sobre Array. Groovy intenta suavizar las diferencias, por ejemplo, puede utilizar el size método en un Array para obtener el número de elementos (aunque en Java tendrías que usar el length propiedad).

(En Ruby, la estructura de datos que más se parece a una lista se llama Array, por lo que las personas que llegan a Groovy o Grails desde Rails sin experiencia en Java tienden a transferir la nomenclatura con la confusión resultante).

java.util.List es una interfaz que describe las operaciones de lista básicas que son implementadas por los diferentes tipos de listas. Las listas usan parámetros de tipo genérico para describir lo que pueden contener (los tipos son opcionales en Groovy). Los tipos genéricos de las listas son invariantes, no covariantes. Las colecciones genéricas se basan en la verificación en tiempo de compilación para hacer cumplir la seguridad de tipos.

En Groovy, cuando crea una lista usando la sintaxis literal (def mylist = []) los java.util.ArrayList es la implementación que obtienes:

groovy:000> list = ['a', 'b', 'c']
===> []
groovy:000> list instanceof List
===> true
groovy:000> list.class
===> class java.util.ArrayList
groovy:000> list.class.array
===> false
groovy:000> list << 'd'
===> [d]
groovy:000> list[0]
===> a

Para crear una matriz, debe agregar as (type)[] a la declaración:

groovy:000> stringarray = ['a', 'b', 'c'] as String[]
===> [a, b, c]
groovy:000> stringarray.class
===> class [Ljava.lang.String;
groovy:000> stringarray.class.array
===> true
groovy:000> stringarray << 'd'
ERROR groovy.lang.MissingMethodException:
No signature of method: [Ljava.lang.String;.leftShift() is applicable 
for argument types: (java.lang.String) values: [d]
groovy:000> stringarray[0]
===> a

Ya hay varias preguntas, ArrayList Vs LinkedList y ¿Cuándo usar LinkedList <> sobre ArrayList <> ?, que cubren las diferencias entre LinkedList y ArrayList.

Puedes encontrar diferencias entre ArrayList y LinkedList, estas son implementaciones de List(interfaz). Cada implementación tiene diferentes métodos. Puedes ver estos métodos en:

* Métodos LinkedList

* Métodos ArrayList

La lista no se puede comparar con ArrayList.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *