¿Cuál es la diferencia entre Collection y List en Java?

153

¿Cuál es la diferencia entre Collectiony Listen Java? ¿Cuándo debo usar cuál?

Truong Ha
fuente
La lista de interfaz pública extiende la colección {}
rai.skumar

Respuestas:

263

Primero apagado: a Listes a Collection. Es un especializado Collection, sin embargo.

A Collectiones solo eso: una colección de artículos. Puede agregar cosas, eliminar cosas, iterar sobre ellas y consultar cuánto hay allí.

A Listagrega la información sobre una secuencia definida de cosas: puede obtener el elemento en la posición n , puede agregar un elemento en la posición n , puede eliminar el elemento en la posición n .

En un Collectionno puede hacer eso: "el quinto elemento de esta colección" no está definido, porque no hay un orden definido.

También hay otras colecciones especializadas, por ejemplo, una Setque agrega la característica de que nunca contendrá el mismo elemento dos veces.

Joachim Sauer
fuente
9
sí, la lista es una especialización ordenada de colección (pero no ordenada) +1
atamanroman
2
Lista de java se extiende interactuar Colecciones y construye funciones indexados que ayuda en la posición basa la recuperación y la eliminación de la conducta
frictionlesspulley
188

Collectiones la interfaz raíz de la jerarquía de colecciones de Java. Listes una subinterfaz que define una Colección ordenada, otras subinterfaces Queueque normalmente almacenan elementos listos para el procesamiento (por ejemplo, pila ).

El siguiente diagrama muestra la relación entre los diferentes tipos de colección de Java:

colecciones java

krock
fuente
1
Realmente me gusta su imagen, la he visto al prepararme para SCJP, pero casi me olvido de esas cosas en estos días.
Truong Ha
1
Debo admitir que esta imagen fue saqueada de este blog . Yo también vi por primera vez un diagrama como este en el libro K&B SCJP .
krock
puedes aprender mucho del certificado scjp, la mayoría de los libros sobre este tema son increíbles :)
atamanroman
Supongo Mapque no es un Collection.
giannis christofakis
7

La API de Java es la mejor para responder esto

Colección

La interfaz raíz en la jerarquía de colección. Una colección representa un grupo de objetos, conocidos como sus elementos. Algunas colecciones permiten elementos duplicados y otras no. Algunos son ordenados y otros no ordenados. El JDK no proporciona implementaciones directas de esta interfaz: proporciona implementaciones de subinterfaces más específicas como Set y List. Esta interfaz se usa generalmente para pasar colecciones y manipularlas donde se desea la máxima generalidad.

Lista (se extiende Colección)

Una colección ordenada (también conocida como secuencia). El usuario de esta interfaz tiene un control preciso sobre dónde se inserta cada elemento en la lista. El usuario puede acceder a los elementos por su índice entero (posición en la lista) y buscar elementos en la lista.

A diferencia de los conjuntos, las listas generalmente permiten elementos duplicados. Más formalmente, las listas generalmente permiten pares de elementos e1 y e2 de modo que e1.equals (e2), y generalmente permiten múltiples elementos nulos si permiten elementos nulos. No es inconcebible que alguien desee implementar una lista que prohíba los duplicados, lanzando excepciones de tiempo de ejecución cuando el usuario intenta insertarlos, pero esperamos que este uso sea raro.

Eugene Ryzhikov
fuente
3

List y Set son dos subclases de Collection.

En la Lista, los datos están en un orden particular.

En Set, no puede contener los mismos datos dos veces.

En Collection, solo almacena datos sin un orden particular y puede contener datos duplicados.

Neeraj Bansal
fuente
2

Collection es una interfaz de alto nivel que describe objetos Java que pueden contener colecciones de otros objetos. No es muy específico acerca de cómo se accede a ellos, si pueden existir múltiples copias del mismo objeto en la misma colección, o si el orden es importante. La lista es específicamente un pedido colección de objetos. Si coloca objetos en una Lista en un orden particular, permanecerán en ese orden.

Y decidir dónde usar estas dos interfaces es mucho menos importante que decidir cuál es la implementación concreta que usa. Esto tendrá implicaciones para el rendimiento en tiempo y espacio de su programa. Por ejemplo, si desea una lista, puede usar una ArrayList o LinkedList, cada una de las cuales tendrá implicaciones para la aplicación. Para otros tipos de colección (por ejemplo, Conjuntos), se aplican consideraciones similares.

Gian
fuente
2

Collection es la interfaz Super de List, por lo que cada lista Java es también una instancia de colección. Las colecciones solo son iterables secuencialmente (y sin ningún orden en particular), mientras que una Lista permite el acceso a un elemento en una determinada posición a través del get(int index)método.

Narciso
fuente
2

Collection es la interfaz principal de la jerarquía de colecciones de Java y List (Sequence) es una de las subinterfaces que define una colección ordenada.

Ramya
fuente