List y Set son ambas interfaces. Ambos amplían la interfaz de recopilación. En este post estamos discutiendo el diferencias entre las interfaces List y Set en java.
Lista Vs Conjunto
1) La lista es una colección ordenada que mantiene el orden de inserción, lo que significa que al visualizar el contenido de la lista mostrará los elementos en el mismo orden en que fueron insertados en la lista.
El conjunto es una colección desordenada, no guarda ningún orden. Hay pocas implementaciones de Set que mantienen el orden como LinkedHashSet (mantienen los elementos en el orden de inserción).
2) La lista permite duplicados, mientras que Establecer no permite elementos duplicados. Todos los elementos de un conjunto deben ser únicos si intenta insertar el elemento duplicado en el conjunto, reemplazará el valor existente.
3) Enumere las implementaciones: ArrayList, LinkedList, etc.
Establecer implementaciones: HashSet, LinkedHashSet, TreeSet, etc.
4) La lista permite cualquier número de valores nulos. El conjunto puede tener como máximo un valor nulo.
5) ListIterator se puede usar para atravesar una List en ambas direcciones (hacia adelante y hacia atrás) Sin embargo, no se puede usar para atravesar un Set. Podemos usar Iterator (también funciona con List) para atravesar un Set.
6) La interfaz List tiene una clase heredada llamada Vector, mientras que la interfaz Set no tiene una clase heredada.
¿Cuándo usar Set y cuándo usar List?
El uso depende exclusivamente del requisito:
Si el requisito es tener solo valores únicos, Set es la mejor solución ya que cualquier implementación de Set mantiene solo valores únicos.
Si necesita mantener el orden de inserción independientemente de la duplicidad, la mejor opción es Lista. Ambas implementaciones de la interfaz List – ArrayList y LinkedList clasifican los elementos en su orden de inserción.
Ejemplo de lista
import java.util.List; import java.util.ArrayList; import java.util.LinkedList; public class ListExample { public static void main(String[] args) { List<String> al = new ArrayList<String>(); al.add("Chaitanya"); al.add("Rahul"); al.add("Ajeet"); System.out.println("ArrayList Elements: "); System.out.print(al); List<String> ll = new LinkedList<String>(); ll.add("Kevin"); ll.add("Peter"); ll.add("Kate"); System.out.println("nLinkedList Elements: "); System.out.print(ll); } }
Producción:
ArrayList Elements: [Chaitanya, Rahul, Ajeet] LinkedList Elements: [Kevin, Peter, Kate]
Poner el ejemplo
import java.util.Set; import java.util.HashSet; import java.util.TreeSet; public class SetExample { public static void main(String args[]) { int count[] = {11, 22, 33, 44, 55}; Set<Integer> hset = new HashSet<Integer>(); try{ for(int i = 0; i<4; i++){ hset.add(count[i]); } System.out.println(hset); TreeSet<Integer> treeset = new TreeSet<Integer>(hset); System.out.println("The sorted list is:"); System.out.println(treeset); } catch(Exception e){ e.printStackTrace(); } } }
Producción:
[33, 22, 11, 44] The sorted list is: [11, 22, 33, 44]