framework example español ejemplos ejemplo colecciones java list set

example - list set java



¿Cuál es la diferencia entre Set y List? (26)

Lista:

List s generalmente permite objetos duplicados. List deben ordenarse y, por lo tanto, son accesibles por índice.

Las clases de implementación incluyen: ArrayList , LinkedList , Vector

Conjunto:

Set s no permiten objetos duplicados. La mayoría de las implementaciones no están ordenadas, pero es específica de la implementación.

Las clases de implementación incluyen: HashSet (no ordenado), LinkedHashSet (ordenado), TreeSet (ordenado por orden natural o por comparador proporcionado)

¿Cuál es la diferencia fundamental entre las interfaces Set<E> y List<E> ?


1. La lista permite valores duplicados y el conjunto no permite duplicados

2.Lista mantiene el orden en el que insertó los elementos en la lista El conjunto no mantiene el orden. 3.List es una secuencia ordenada de elementos, mientras que Set es una lista distinta de elementos que no están ordenados.


Al igual que la respuesta, como SET no tiene un valor duplicado y List puede. Por supuesto, el orden es otra cosa para diferenciarlos.


Algunas diferencias dignas de mención entre Lista y Conjunto en Java se dan como sigue:

1) La diferencia fundamental entre Lista y Conjunto en Java es que permite elementos duplicados. La lista en Java permite duplicados, mientras que Set no permite duplicados. Si inserta un duplicado en Set, reemplazará el valor anterior. Cualquier implementación de Set en Java solo contendrá elementos únicos.

2) Otra diferencia significativa entre Lista y Conjunto en Java es el orden. La lista es una colección ordenada, mientras que el conjunto es una colección no ordenada. La lista mantiene el orden de inserción de los elementos, significa que cualquier elemento que se inserte antes irá a un índice más bajo que cualquier elemento que se inserte después. Establecer en Java no mantiene ningún orden. Aunque Set proporciona otra alternativa llamada SortedSet que puede almacenar elementos de Set en un orden de clasificación específico definido por los métodos Comparable y Comparator de los objetos almacenados en Set.

3) La implementación popular de la interfaz de lista en Java incluye ArrayList, Vector y LinkedList. Mientras que la implementación popular de la interfaz Set incluye HashSet, TreeSet y LinkedHashSet.

Es bastante claro que si necesita mantener el orden de inserción o el objeto y su colección puede contener duplicados, entonces List es un camino a seguir. Por otro lado, si su requisito es mantener una colección única sin duplicados, Set es el camino a seguir.


Aquí hay un claro ejemplo con groovy. creo un conjunto y una lista. luego trato de almacenar 20 valores generados aleatoriamente dentro de cada lista. El valor generado puede estar en el rango de 0 a 5.

s = [] as Set l = [] max = 5 print "random Numbers :" 20.times{ e = (int)Math.random()*max s << e l << e print "$e, " } println "/n" println "Set : $s " println "list : $l

El resultado :

Números aleatorios: 4, 1, 4, 0, 1, 2, 4, 0, 0, 3, 4, 3, 2, 0, 4, 0, 1, 3, 1, 3

Conjunto: [4, 1, 0, 2, 3]

lista: [4, 1, 4, 0, 1, 2, 4, 0, 0, 3, 4, 3, 2, 0, 4, 0, 1, 3, 1, 3]

Se puede ver que la diferencia es que:

  • Set no permite valores duplicados.
  • Lista de permitir valores duplicados.

Como estamos hablando de las interfaces de Java, ¿por qué no mirar el Javadoc?

  • Una List es una colección ordenada (secuencia), que normalmente permite duplicados
  • Un Set a es una colección que no contiene elementos duplicados, el orden de iteración puede estar garantizado por la implementación

NO hay ninguna mención sobre la falta de orden con respecto a los Conjuntos: depende de la implementación.


Diferencia basada en los siguientes puntos.

1) Duplicidad: Lista permite elementos duplicados. Se puede insertar cualquier cantidad de elementos duplicados en la lista sin afectar los mismos valores existentes y sus índices. Set no permite duplicados. Set y todas las clases que implementan Set interface deberían tener elementos únicos.

2) Valores nulos: la lista permite cualquier número de valores nulos. Set permite un solo valor nulo como máximo.

3) Orden: La lista y todas sus clases de implementación mantienen el orden de inserción. Set no mantiene ningún orden; todavía algunas de sus clases clasifican los elementos en un orden como LinkedHashSet mantiene los elementos en orden de inserción.


Hola. Ya se han dado muchas respuestas ... Permítanme señalar algunos puntos que no se mencionan hasta ahora:

  • La mayoría de las implementaciones de la Lista (ArrayList, Vector) implementan la interfaz RandomAccess , que es una interfaz de marcador para un acceso más rápido. Ninguna de las implementaciones de la Lista hace eso.
  • List utiliza un iterador especial llamado ListIterator que admite la iteración en ambas direcciones . El conjunto utiliza el iterador que admite solo una iteración de 1 vía
  • HashSet necesita 5,5 veces más memoria que ArrayList para almacenar la misma cantidad de elementos.

Lista:

  1. Se permiten duplicados.
  2. Ordenados en elementos de agrupación. (En otras palabras, tienen un orden definido. No es necesario clasificarlos en orden ascendente)

Conjunto:

  1. No se permiten duplicados.
  2. Desordenado en elementos de agrupación. (En otras palabras, no tiene un orden definido. Puede o no puede estar dispuesto en orden ascendente)

Listas ordenadas de elementos (únicos o no)
Conforme a la interfaz de Java llamada List
Se puede acceder por índice

uso implícito

  • Lista enlazada
  • Lista de arreglo

Listas de elementos únicos:
Conforme a la interfaz de Java llamada Set
No se puede acceder por índice

uso implícito

  • HashSet (desordenado)
  • LinkedHashSet (ordenado)
  • TreeSet (ordenado por orden natural o por comparador proporcionado)

Ambas interfaces Set y List ajustan a la interfaz de Java llamada Collection


Nombre del TEMA: List VS Set

Acabo de pasar por el tema más importante de Java llamado Collections Framework. Pensé compartir mi pequeño conocimiento sobre Colecciones con ustedes. Lista, conjunto, mapa son el tema más importante de la misma. Así que vamos a empezar con Lista y conjunto.

Diferencia entre lista y conjunto:

  1. List es una clase de colección que extiende la clase AbstractList , mientras que Set es una clase de colección que extiende la clase AbstractSet , pero ambas implementan la interfaz de Collection.

  2. La interfaz de la lista permite valores duplicados (elementos), mientras que la interfaz Set no permite valores duplicados. En caso de elementos duplicados en Set, reemplaza valores anteriores.

  3. La interfaz de lista permite valores NULL mientras que la interfaz Set no permite valores NULL. En caso de usar valores nulos en Set, da NullPointerException .

  4. La interfaz de la lista mantiene el orden de inserción. Eso significa que la forma en que agregamos los elementos en la Lista de la misma manera que lo obtenemos usando iterador o para cada estilo. Mientras que las implementaciones de Set no necesariamente mantienen el orden de inserción. (Aunque SortedSet usa TreeSet , y LinkedHashSet mantiene el orden de inserción).

  5. La interfaz de la lista tiene sus propios métodos definidos, mientras que la interfaz Set no tiene su propio método, por lo que Set solo utiliza los métodos de la interfaz Collection.

  6. La interfaz de la lista tiene una clase heredada llamada Vector mientras que la interfaz Set no tiene ninguna clase heredada

  7. Por último, pero no menos importante ... El método listIterator() solo se puede usar para recorrer los elementos dentro de las clases de lista, mientras que podemos usar el método iterator () para acceder a los elementos de la clase Set.

¿Algo más podemos agregar? Por favor hagamelo saber.

Gracias.


Pedidos ... una lista tiene un pedido, un conjunto no.


Puede que esta no sea la respuesta que está buscando, pero el JavaDoc de las clases de colecciones es en realidad bastante descriptivo. Copiar / pegar:

Una colección ordenada (también conocida como una 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 suelen permitir elementos duplicados. Más formalmente, las listas normalmente permiten pares de elementos e1 y e2, de manera tal que e1.equals (e2), y típicamente permiten múltiples elementos nulos si permiten elementos nulos en absoluto. 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 poco frecuente.


Todas las clases de la List mantienen el orden de inserción. Usan diferentes implementaciones basadas en el rendimiento y otras características (por ejemplo, ArrayList para la velocidad de acceso de un índice específico, LinkedList para simplemente mantener el orden). Como no hay clave, se permiten duplicados.

Las clases Set no mantienen el orden de inserción. Opcionalmente, pueden imponer un orden específico (como con SortedSet ), pero generalmente tienen un orden definido por la implementación basado en alguna función de hash (como con HashSet ). Dado que se accede a los conjuntos por clave, no se permiten duplicados.


Un conjunto es un grupo desordenado de objetos distintos, no se permiten objetos duplicados. Generalmente se implementa utilizando el código hash de los objetos que se insertan. (Las implementaciones específicas pueden agregar orden, pero la interfaz Set no lo hace).

Una lista es un grupo ordenado de objetos que puede contener duplicados. Se podría implementar con un ArrayList , LinkedList , etc.


Un conjunto no puede contener elementos duplicados mientras que una lista puede. Una Lista (en Java) también implica orden.


List es una secuencia ordenada de elementos, mientras que Set es una lista distinta de elementos que no está ordenada (gracias, Quinn Taylor ).

List<E>:

Una colección ordenada (también conocida como una 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.

Set<E>:

Una colección que no contiene elementos duplicados. Más formalmente, los conjuntos no contienen pares de elementos e1 y e2, de modo que e1.equals (e2), y como máximo un elemento nulo. Como lo indica su nombre, esta interfaz modela la abstracción del conjunto matemático.


Set<E> y List<E> se utilizan para almacenar elementos de tipo E La diferencia es que Set se almacena de forma desordenada y no permite valores duplicados. List se utiliza para almacenar elementos de forma ordenada y permite valores duplicados.

No se puede acceder a los elementos de Set mediante una posición de índice, y se puede acceder a los elementos de List con una posición de índice.


Conjunto:

No se pueden tener valores duplicados. El pedido depende de la implementación. Por defecto no está ordenado. No se puede acceder por índice.

Lista:

Puede tener valores duplicados Ordenados por defecto Puede tener acceso por índice


Conjunto: un conjunto no puede tener elementos duplicados en sus colecciones. También es una colección desordenada. Para acceder a los datos de Set, se requiere que use solo Iterator y no es posible la recuperación basada en índices. Se utiliza principalmente siempre que se requiera colección de singularidad.

Lista: una lista puede tener elementos duplicados, con el orden natural a medida que se inserta. Por lo tanto, se pueden recuperar datos basados ​​en índice o iterador. Se utiliza ampliamente para almacenar colecciones a las que se debe acceder según el índice.


Duplicidad

Set no permite duplicados. Set y todas las clases que implementan Set interface deberían tener elementos únicos. Lista permite elementos duplicados. Se puede insertar cualquier cantidad de elementos duplicados en la lista sin afectar los mismos valores existentes y sus índices.

Valores nulos

List allows any number of null values. Set allows single null value at most

Orden

La lista y todas sus clases de implementación mantienen el orden de inserción. El conjunto no mantiene ningún orden, aún algunas de sus clases clasifican los elementos en un orden como LinkedHashSet mantiene los elementos en el orden de inserción y TreeSet (los elementos mantienen el orden ascendente de forma predeterminada)

implementaciones de clase

List: ArrayList, LinkedList Set: HashSet, LinkedHashSet, TreeSet


Lista Vs Set

1) El conjunto no permite duplicados. Lista permite duplicar. Basado en la implementación de Set, también mantiene la orden de inserción.

por ejemplo: LinkedHashSet . Mantiene el orden de inserción. Por favor, haga clic aquí.

2) contiene el método. Por naturaleza del Conjunto dará mejor rendimiento de acceso. En el mejor de los casos es o (1). Pero la lista tiene un problema de rendimiento para invocar contains .


Lista:
La lista permite elementos duplicados y valores nulos. Fácil de buscar utilizando el índice correspondiente de los elementos y también mostrará los elementos en orden de inserción. Ejemplo: (lista enlazada)

import java.util.*; public class ListExample { public static void main(String[] args) { // TODO Auto-generated method stub List<Integer> l=new LinkedList<Integer>(); l.add(001); l.add(555); l.add(333); l.add(888); l.add(555); l.add(null); l.add(null); Iterator<Integer> il=l.iterator(); System.out.println(l.get(0)); while(il.hasNext()){ System.out.println(il.next()); } for(Integer str : l){ System.out.println("Value:"+str); } } }

Salida:

1
1
555
333
888
555
nulo
nulo
Valor: 1
Valor: 555
Valor: 333
Valor: 888
Valor: 555
Valor: nulo
Valor: nulo

Conjunto:
El conjunto no permite elementos duplicados y permite un solo valor nulo. No mantendrá ningún orden para mostrar elementos. TreeSet se mostrará en orden ascendente.

Ejemplo: (TreeSet)

import java.util.TreeSet; public class SetExample { public static void main(String[] args) { // TODO Auto-generated method stub TreeSet<String> set = new TreeSet<String>(); try { set.add("hello"); set.add("world"); set.add("welcome"); set.add("all"); for (String num : set) { System.out.println( num); } set.add(null); } catch (NullPointerException e) { System.out.println(e); System.out.println("Set doesn''t allow null value and duplicate value"); } } }

Salida:

todos
Hola
Bienvenido
mundo
java.lang.NullPointerException
El conjunto no permite valor nulo y valor duplicado


Lista

  1. Es una agrupación ordenada de elementos.
  2. La lista se utiliza para la colección de elementos con duplicados.
  3. Los nuevos métodos se definen dentro de la interfaz de la lista.

Conjunto

  1. Es una agrupación desordenada de elementos.
  2. Set se utiliza para la colección de elementos sin duplicados.
  3. No se definen nuevos métodos dentro de la interfaz de Set, por lo que tenemos que usar los métodos de la interfaz de Colección solo con las subclases de Set.

╔═══════════════════╦══════════════════════╦═════════════════════════════╗ ║ ║ List ║ Set ║ ╠═══════════════════╬══════════════════════╬═════════════════════════════╣ ║ Duplicates ║ YES ║ NO ║ ╠═══════════════════╬══════════════════════╬═════════════════════════════╣ ║ Order ║ ORDERED ║ DEPENDS ON IMPLEMENTATION ║ ╠═══════════════════╬══════════════════════╬═════════════════════════════╣ ║ Positional Access ║ YES ║ NO ║ ╚═══════════════════╩══════════════════════╩═════════════════════════════╝


  • Una lista es una agrupación ordenada de artículos
  • Un conjunto es una agrupación desordenada de elementos sin duplicados permitidos (generalmente)

Conceptualmente, generalmente nos referimos a una agrupación desordenada que permite duplicados como una Bolsa y no permite duplicados es un Conjunto.