¿Qué es la colección en Java?
Una colección en java se representa como un contenedor que agrupa todos los elementos en una sola unidad. Por ejemplo , una carpeta de correo (grupo de correos electrónicos), un directorio telefónico (asignación de nombres a números de teléfono).¿Qué es un marco?
Un marco es una base o diseño básico sobre el cual comienzas a trabajar utilizando las diferentes clases e interfaces proporcionadas. Por ejemplo , Laravel es uno de los frameworks PHP más famosos que proporciona un esqueleto básico para su aplicación.¿Qué es el marco de colecciones en Java?
Todos los objetos se agrupan en un solo objeto junto con una arquitectura que representa y proporciona diferentes métodos para manipular colecciones. Por lo tanto, el marco de Colecciones en Java proporciona diferentes estructuras de datos ya implementadas para almacenar datos y métodos, para manipularlos con funciones como clasificación, búsqueda, eliminación e inserción . Por ejemplo , desea implementar un sistema para que alguna empresa aleatoria mejore el servicio a sus clientes, basándose en el orden de llegada. Esto también se conoce como implementación FIFO (primero en entrar, primero en salir). Ahora necesitamos implementar esta estructura de datos y luego usarla para lograr nuestro objetivo. El marco de Colecciones nos proporciona una interfaz de cola que solo necesitamos importar en lugar de implementar, luego usarla y listo. Implementación : puede importar todas las colecciones utilizando la siguiente línea:
import java.util.*;
Si desea importar una colección específica, utilice el nombre exacto del paquete, como por ejemplo:
import java.util.LinkedList;
Beneficios del marco de colecciones en Java
Tiene los siguientes beneficios.- Ya implementado (ahorro de tiempo).
- Rendimiento Eficiencia (rapidez y calidad).
- Reduce el esfuerzo para aprender y utilizar nuevas API.
¿Cuál es la jerarquía del marco de recopilación?
Ahora veamos la jerarquía de las colecciones, pero primero necesitamos conocer los componentes esenciales de este marco.- Interfaces
- Clases (implementación)
- Algoritmos
Jerarquía del marco de recopilación

- Colección, Conjunto, Cola y Lista son todas interfaces. Conjunto, cola y lista se amplían mediante la interfaz Colección.
- PriorityQueue, HashSet, LinkedList y Stack son clases o la implementación de estas interfaces.
- No es obligatorio que una clase implemente una sola interfaz. LinkedList también implementa la interfaz Deque, por ejemplo.
Tipos de colecciones
El marco de colecciones de Java tiene muchos tipos de colecciones para reducir nuestros esfuerzos. Aquí hay una lista de algunas de las colecciones:- Clase ArrayList
- Clase de lista vinculada
- Interfaz de lista
- Establecer interfaz
- Interfaz de cola
- Interfaz de mapa
- Clase de cola prioritaria
- Clase HashMap
- Interfaz comparable
- Clase LinkedHashMap
- Clase TreeMap
- Tabla de picadillo
Interfaces de colección
Aquí discutiremos algunas interfaces de colección comunes y luego algunos métodos implementados por las clases.Interfaz de colección
Esta es una base básica para el marco de Colecciones, ya que proporciona todos los métodos necesarios para la implementación. El Mapa es la única estructura de datos que no lo implementa, pero el resto implementa sus métodos. Esta interfaz tiene métodos para conocer el tamaño de la colección y si existe un objeto en la colección, agregando o eliminando objetos de la colección.Interfaz iterable
Es la interfaz raíz del marco de Colecciones, ya que la amplía la interfaz de Colección que implementan todas las clases. Devuelve un iterador para que la colección específica itere sobre ella.Interfaz de cola
La cola se utiliza para contener los elementos pero no se pueden procesar. Al implementar las operaciones básicas de recolección, también proporciona métodos adicionales de inserción y extracción.Establecer interfaz
El conjunto se utiliza para contener elementos únicos. Nunca contiene elementos duplicados y modela la abstracción de conjuntos matemáticos para representar conjuntos, como procesos que se ejecutan en una máquina.Interfaz de lista
Una lista es una colección ordenada, a veces llamada secuencia, que puede contener elementos duplicados. Proporciona control al usuario para actualizar o eliminar un elemento específico, insertando un elemento en un punto específico utilizando su valor de índice entero. LinkedList y ArrayList son clases de implementación de la interfaz List.Interfaz Deque
Deque significa cola de doble extremo, lo que significa que podemos realizar operaciones en ambos extremos. Podemos insertar y quitar elementos por ambos extremos. La interfaz Deque extiende la interfaz de cola. ArrayDeque y LinkedList implementan la interfaz Deque. Proporciona métodos para insertar, eliminar y examinar la instancia desde ambos extremos.Interfaz de mapa
La interfaz del mapa también es parte del marco de Colecciones, pero no amplía la interfaz de la Colección. Se utiliza para almacenar pares clave-valor. Sus principales implementaciones son HashMap, TreeMap y LinkesHashMap, que son similares en ciertos aspectos a HashSet, TreeSet y LinkedHashSet. Siempre contiene claves únicas pero los valores se pueden duplicar. Es útil cuando necesita agregar, eliminar o buscar un elemento según una clave. Nos proporciona métodos básicos como poner , obtener , eliminar , dimensionar , vaciar , etc.Métodos comunes de estas interfaces
Ahora veremos algunos métodos comunes proporcionados para la implementación de diferentes clases en este marco, excepto la interfaz Map.Métodos | Descripción |
---|---|
adición booleana pública (E e) | Se utiliza para insertar un elemento en la colección. |
eliminación booleana pública (elemento objeto) | Se utiliza para eliminar un elemento de la colección. |
tamaño int público() | Devuelve el número de elementos de una colección. |
booleano público contiene (elemento objeto) | Se utiliza para buscar un elemento. |
booleano público está vacío () | Comprueba si la colección está vacía. |
público booleano es igual (elemento objeto) | Controles de igualdad |
Clases de colección
Como sabemos, el marco tiene diferentes interfaces que son implementadas por muchas clases dentro de él. Ahora echemos un vistazo a algunas clases de uso común.Lista enlazada
Es la estructura de datos más utilizada que implementa una lista doblemente enlazada para almacenar los elementos que contiene. Puede almacenar elementos duplicados. Implementa la interfaz Dequeue extendida por la interfaz Queue y la interfaz List. No está sincronizado. Ahora veamos cómo resolver nuestro problema discutido anteriormente (el concepto FIFO) usando LinkedList. El problema es atender a los clientes de la manera en que llegan, es decir, el primero en entrar, el primero en salir .Ejemplo
import java.util.*;
public class LinkedListExample {
public static void main(String[] args) {
Queue<String> customerQueue = new LinkedList<String>();
//Adding customers to the Queue as they arrived
customerQueue.add("John");
customerQueue.add("Angelina");
customerQueue.add("Brooke");
customerQueue.add("Maxwell");
System.out.println("Customers in Queue:"+customerQueue);
//element() => returns head of the queue
//we will see our first customer and serve him
System.out.println("Head of the queue i.e first customer: "+customerQueue.element());
//remove () method =>removes first element(customer) from the queue i.e the customer is served so remove him to see next
System.out.println("Element removed from the queue: "+customerQueue.remove());
//poll () => removes and returns the head
System.out.println("Poll():Returned Head of the queue: "+customerQueue.poll());
//print the remaining customers in the Queue
System.out.println("Final Queue:"+customerQueue);
}
}
Producción
Clientes en la cola: [John, Angelina, Brooke, Maxwell] Jefe de la cola, es decir, primer cliente: John Elemento eliminado de la cola: John Encuesta(): Devuelto Jefe de la cola: Angelina Cola final: [Brooke, Maxwell]
Lista de arreglo
Simplemente implementa la interfaz Lista. Mantiene el orden de inserción y utiliza una matriz dinámica para almacenar elementos de diferentes tipos de datos. Los elementos se pueden duplicar. Tampoco está sincronizado y puede almacenar valores nulos. Ahora veamos sus diferentes métodos... Estos son útiles cuando no sabemos cuántos registros o elementos necesitamos insertar. Tomemos un ejemplo de una biblioteca donde no sabemos cuántos libros tenemos que conservar. Entonces, siempre que tengamos un libro, debemos insertarlo en ArrayList.Ejemplo
public class ArrayListExample {
public static void main(String args[]) {
// Creating the ArrayList
ArrayList<String> books = new ArrayList<String>();
// Adding a book to the list
books.add("Absalom, Absalom!");
// Adding a book in array list
books.add("A Time to Kill");
// Adding a book to the list
books.add("The House of Mirth");
// Adding a book to the list
books.add("East of Eden");
// Traversing the list through Iterator
Iterator<String> itr = books.iterator();
while (itr.hasNext()) {
System.out.println(itr.next());
}
}
}
Producción
¡Absalón, Absalón! Un momento para matar la casa de la alegría al este del Edén
Conjunto de hash
Implementa la interfaz Set y nunca contiene valores duplicados. Implementa la tabla hash para almacenar los valores. También permite valores nulos. Nunca mantiene el orden de inserción, pero proporciona un rendimiento de tiempo constante para los métodos add , remove , size y contains . Es mejor para operaciones de búsqueda y no está sincronizado.Ejemplo
import java.util.*;
class HashSetExample{
public static void main(String args[]){
//creating HashSet and adding elements to it
HashSet<Integer> hashSet=new HashSet();
hashSet.add(1);
hashSet.add(5);
hashSet.add(4);
hashSet.add(3);
hashSet.add(2);
//getting an iterator for the collection
Iterator<Integer> i=hashSet.iterator();
//iterating over the value
while(i.hasNext()) {
System.out.println(i.next());
}
}
}
Producción
1 2 3 4 5
Como puedes ver no mantiene el orden de inserción.
ArrayDeque
Implementa la interfaz Deque por lo que permite operaciones desde ambos extremos. No permite valores nulos. Es más rápido que Stack y LinkedList cuando se implementa como Stack y LinkedList. ArrayDeque no tiene restricciones de tamaño a medida que crece y se reduce según los requisitos. No está sincronizado, lo que significa que no es seguro para subprocesos. Para mantenerlo seguro para subprocesos, tenemos que implementar alguna lógica externa.Ejemplo
import java.util.*;
public class ArrayDequeExample {
public static void main(String[] args) {
//creating Deque and adding elements
Deque<String> deque = new ArrayDeque<String>();
//adding an element
deque.add("One");
//adding an element at the start
deque.addFirst("Two");
//adding an element at the end
deque.addLast("Three");
//traversing elements of the collection
for (String str : deque) {
System.out.println(str);
}
}
}
Producción
dos uno tres
HashMap
Es la implementación de la interfaz Map respaldada por la tabla hash. Almacena los pares clave-valor. No permite valores nulos. No está sincronizado. Nunca garantiza el orden de inserción. Proporciona un rendimiento en tiempo constante para métodos como get y put . Su rendimiento depende de dos factores: capacidad inicial y factor de carga . La capacidad es la cantidad de depósitos en la tabla hash, por lo que la capacidad inicial es la cantidad de depósitos asignados en el momento de la creación. El factor de carga es la medida de cuánto se puede llenar una tabla hash antes de aumentar su capacidad. El método de repetición se utiliza para aumentar la capacidad y principalmente duplica la cantidad de cubos.Ejemplo
import java.util.*;
public class HashMapExample{
public static void main(String args[]){
//creating a HashMap
HashMap<Integer,String> map=new HashMap<Integer,String>();
//putting elements into the map
map.put(1,"England");
map.put(2,"USA");
map.put(3,"China");
//get element at index 2
System.out.println("Value at index 2 is: "+map.get(2));
System.out.println("iterating map");
//iterating the map
for(Map.Entry m : map.entrySet()){
System.out.println(m.getKey()+" "+m.getValue());
}
}
}
Producción
El valor en el índice 2 es: China iterando mapa 1 Inglaterra 2 EE.UU. 3 China
Algoritmos
El marco de Colecciones nos proporciona diferentes algoritmos para que diferentes operaciones se apliquen a las colecciones. Aquí veremos qué operaciones principales están cubiertas por estos algoritmos. Contiene algoritmos relacionados con:- Clasificación
- buscando
- Arrastramiento
- Manipulación de datos de rutina
- Composición
- Encontrar valores extremos
Clasificación
El algoritmo de clasificación reordena una lista según una relación de ordenación. Se proporcionan dos formas de relaciones.- Ordenamiento natural
- Orden de comparación
Ordenamiento natural
En el ordenamiento natural, una lista se ordena según sus elementos.Orden de comparación
En esta forma de ordenar, se pasa un parámetro adicional, que es un comparador, junto con la lista. Para la clasificación se utiliza un algoritmo de clasificación por fusión ligeramente optimizado, que es rápido y estable ya que garantiza el tiempo de ejecución n log(n) y no reordena elementos iguales. Usaremos el mismo ejemplo de ArrayList para demostrar la clasificación.Ejemplo
import java.util.*;
public class SortingExample{
public static void main(String args[]){
//Creating arraylist
ArrayList<String> books=new ArrayList<String>();
//Adding a book to the arraylist
books.add("A Time to Kill");
//Adding a book to the arraylist
books.add("Absalom, Absalom!");
//Adding a book to the arraylist
books.add("The House of Mirth");
//Adding a book to the arraylist
books.add("East of Eden");
//Traversing list through Iterator before sorting
Iterator itrBeforeSort=books.iterator();
while(itrBeforeSort.hasNext()){
System.out.println(itrBeforeSort.next());
}
//sorting the books
Collections.sort(books);
System.out.println("After sorting the books");
//Traversing list through Iterator after sorting
Iterator itr=books.iterator();
while(itr.hasNext()){
System.out.println(itr.next());
}
}
}
Producción
¡Es hora de matar a Absalón, Absalón! La casa de la alegría al este del Edén Después de clasificar los libros ¡Tiempo de matar a Absalón, Absalón! Al este del Edén La Casa de la Alegría
GO TO FULL VERSION