Interfaz de colección en Java con ejemplos

La interfaz Collection es miembro de Java Collections Framework . Es una parte del paquete java.util . Es una de las interfaces raíz de la jerarquía de colecciones. La interfaz Collection no está implementada directamente por ninguna clase. Sin embargo, se implementa indirectamente a través de sus subtipos o subinterfaces como List , Queue y Set

Por ejemplo, la clase HashSet implementa la interfaz Set, que es una subinterfaz de la interfaz Collection. Si una implementación de colección no implementa una operación en particular, debe definir el método correspondiente para lanzar UnsupportedOperationException .

La jerarquía de la colección

Collection-Interface-in-Java-with-Examples

Implementa la interfaz Iterable<E> . Las subinterfaces de Collection son BeanContext , BeanContextServices , BlockingDeque<E> , BlockingQueue<E> , Deque<E> , EventSet , List<E> , NavigableSet<E> , Queue<E> , Set<E> , SortedSet< E> , TransferQueue<E> .

Subinterfaces de la interfaz de colección

Todas las Clases del Marco de Colección implementan las subInterfaces de la Interfaz de Colección. Todos los métodos de las interfaces de colección también están contenidos en sus subinterfaces. Estas subinterfaces a veces se denominan tipos de colección o subtipos de colección. Estos incluyen lo siguiente:

Lista : esta es una interfaz secundaria de la interfaz de colección. Esta interfaz está dedicada a los datos de tipo lista en la que podemos almacenar toda la colección ordenada de los objetos. Esto también permite que haya datos duplicados en él. Esta interfaz de lista está implementada por varias clases como ArrayList , Vector , Stack , etc. Dado que todas las subclases implementan la lista, podemos crear una instancia de un objeto de lista con cualquiera de estas clases. Por ejemplo,

Lista <T> al = new ArrayList<>();

Lista <T> ll = new LinkedList<>();

Lista <T> v = nuevo Vector<>();

Donde T es el tipo del objeto

Conjunto : un conjunto es una colección desordenada de objetos en los que no se pueden almacenar valores duplicados. Esta colección se utiliza cuando deseamos evitar la duplicación de los objetos y deseamos almacenar solo los objetos únicos. Esta interfaz de conjunto es implementada por varias clases como HashSet , TreeSet , LinkedHashSet , etc. Dado que todas las subclases implementan el conjunto, podemos instanciar un objeto de conjunto con cualquiera de estas clases. Por ejemplo,

Set<T> hs = nuevo HashSet<>();

Set<T> lhs = nuevo LinkedHashSet<>();

Set<T> ts = nuevo TreeSet<>();

Donde T es el tipo del objeto.

SortedSet : esta interfaz es muy similar a la interfaz del conjunto. La única diferencia es que esta interfaz tiene métodos extra que mantienen el orden de los elementos. La interfaz de conjuntos ordenados amplía la interfaz de conjuntos y se utiliza para manejar los datos que deben clasificarse. La clase que implementa esta interfaz es TreeSet . Dado que esta clase implementa SortedSet, podemos instanciar un objeto SortedSet con esta clase. Por ejemplo,

SortedSet<T> ts = nuevo TreeSet<>();

Donde T es el tipo del objeto.

Cola : como sugiere el nombre, una interfaz de cola mantiene el orden FIFO (primero en entrar, primero en salir) similar a una línea de cola del mundo real. Esta interfaz está dedicada a almacenar todos los elementos donde importa el orden de los elementos. Por ejemplo, cada vez que tratamos de reservar un boleto, los boletos se venden por orden de llegada. Por lo tanto, la persona cuya solicitud llega primero a la cola obtiene el boleto. Hay varias clases como PriorityQueue , Deque , ArrayDeque , etc. Dado que todas estas subclases implementan la cola, podemos instanciar un objeto de cola con cualquiera de estas clases. Por ejemplo,

Cola <T> pq = new PriorityQueue<>();

Cola <T> ad = new ArrayDeque<>();

Donde T es el tipo del objeto.

Deque : Esta es una variación muy leve de la estructura de datos de la cola . Deque , también conocida como cola de dos extremos, es una estructura de datos en la que podemos agregar y eliminar los elementos de ambos extremos de la cola. Esta interfaz amplía la interfaz de cola. La clase que implementa esta interfaz es ArrayDeque . Dado que esta clase implementa el deque, podemos instanciar un objeto deque con esta clase. Por ejemplo,

Deque<T> anuncio = new ArrayDeque<>();

Donde T es el tipo del objeto.

Declaración:

public interface Collection<E> extends Iterable<E>

Aquí, E es el tipo de elementos almacenados en la colección.

Ejemplo:

Java

// Java program to illustrate Collection interface
 
import java.io.*;
import java.util.*;
 
public class CollectionDemo {
    public static void main(String args[])
    {
 
        // creating an empty LinkedList
        Collection<String> list = new LinkedList<String>();
 
        // use add() method to add elements in the list
        list.add("Geeks");
        list.add("for");
        list.add("Geeks");
 
        // Output the present list
        System.out.println("The list is: " + list);
 
        // Adding new elements to the end
        list.add("Last");
        list.add("Element");
 
        // printing the new list
        System.out.println("The new List is: " + list);
    }
}
Producción

The list is: [Geeks, for, Geeks]
The new List is: [Geeks, for, Geeks, Last, Element]

Implementando Clases

La interfaz de colección está implementada por AbstractCollection , AbstractList , AbstractQueue , AbstractSequentialList , AbstractSet , ArrayBlockingQueue , ArrayDeque , ArrayList , AttributeList , BeanContextServicesSupport , BeanContextSupport , ConcurrentHashMap.KeySetView , ConcurrentLinkedDeque , ConcurrentLinkedQueue , ConcurrentSkipListSet , CopyOnWrite OnrayWlayListAr , CopyEnumSet , HashSet , JobStateReasons , LinkedBlockingDeque , LinkedBlockingQueue , LinkedHashSet , LinkedList , LinkedTransferQueue , PriorityBlockingQueue , PriorityQueue , RoleList , RoleUnresolvedList , Stack , SynchronousQueue , TreeSet , Vector .

Sintaxis: 

Collection<E> objectName = new ArrayList<E>();

Aquí, E es el tipo de elementos almacenados en la colección.

Nota: en la sintaxis anterior, podemos reemplazar cualquier clase con ArrayList si esa clase implementa la interfaz Collection. 

Operaciones básicas

1. Agregar elementos 

Los métodos add(E e) y addAll(Collection c) proporcionados por Collection se pueden usar para agregar elementos. 

Java

// Java code to illustrate adding
// elements to the Collection
 
import java.io.*;
import java.util.*;
 
public class AddingElementsExample {
    public static void main(String[] args)
    {
 
        // create an empty array list with an initial
        // capacity
        Collection<Integer> list1 = new ArrayList<Integer>(5);
 
        // use add() method to add elements in the list
        list1.add(15);
        list1.add(20);
        list1.add(25);
 
        // prints all the elements available in list
        for (Integer number : list1) {
            System.out.println("Number = " + number);
        }
 
        // Creating an empty ArrayList
        Collection<Integer> list2 = new ArrayList<Integer>();
 
        // Appending the collection to the list
        list2.addAll(list1);
 
        // displaying the modified ArrayList
        System.out.println("The new ArrayList is: " + list2);
    }
}
Producción

Number = 15
Number = 20
Number = 25
The new ArrayList is: [15, 20, 25]

2. Eliminación de elementos

Los métodos remove(E e) y removeAll(Collection c) se pueden usar para eliminar un elemento en particular o una colección de elementos de una colección. 

Java

// Java program to demonstrate removing
// elements from a Collection
 
import java.util.*;
 
public class RemoveElementsExample {
    public static void main(String[] argv) throws Exception
    {
 
        // Creating object of HashSet<Integer>
        Collection<Integer> set1 = new HashSet<Integer>();
 
        // Populating arrset1
        set1.add(1);
        set1.add(2);
        set1.add(3);
        set1.add(4);
        set1.add(5);
 
        // print set1
        System.out.println("Initial set1 : " + set1);
         
          // remove a particular element
          set1.remove(4);
       
          // print modified set1
        System.out.println("set1 after removing 4 : " + set1);
       
        // Creating another object of HashSet<Integer>
        Collection<Integer> set2 = new HashSet<Integer>();
        set2.add(1);
        set2.add(2);
        set2.add(3);
 
        // print set2
        System.out.println("Collection Elements to be removed : " + set2);
 
        // Removing elements from set1
        // specified in set2
        // using removeAll() method
        set1.removeAll(set2);
 
        // print arrset1
        System.out.println("set 1 after removeAll() operation : " + set1);
    }
}
Producción

Initial set1 : [1, 2, 3, 4, 5]
set1 after removing 4 : [1, 2, 3, 5]
Collection Elements to be removed : [1, 2, 3]
set 1 after removeAll() operation : [5]

3. Iterando 

Para iterar sobre los elementos de la Colección podemos usar el método iterator()

Java

// Java code to illustrate iterating
// over a Collection
 
import java.util.*;
 
public class IteratingExample {
 
    public static void main(String[] args)
    {
        // Create and populate the list
        Collection<String> list = new LinkedList<>();
 
        list.add("Geeks");
        list.add("for");
        list.add("Geeks");
        list.add("is");
        list.add("a");
        list.add("CS");
        list.add("Students");
        list.add("Portal");
 
        // Displaying the list
        System.out.println("The list is: " + list);
 
        // Create an iterator for the list
        // using iterator() method
        Iterator<String> iter = list.iterator();
 
        // Displaying the values after iterating
        // through the list
        System.out.println("\nThe iterator values" + " of list are: ");
        while (iter.hasNext()) {
            System.out.print(iter.next() + " ");
        }
    }
}
Producción

The list is: [Geeks, for, Geeks, is, a, CS, Students, Portal]

The iterator values of list are: 
Geeks for Geeks is a CS Students Portal

Métodos de recolección

MÉTODO

DESCRIPCIÓN

agregar​(E e) Garantiza que esta colección contenga el elemento especificado (operación opcional).
addAll​(Colección<? extiende E> c) Agrega todos los elementos de la colección especificada a esta colección (operación opcional).
clear() Elimina todos los elementos de esta colección (operación opcional).
contiene​(Objeto o) Devuelve verdadero si esta colección contiene el elemento especificado.
contieneTodo​(Colección<?> c) Devuelve verdadero si esta colección contiene todos los elementos de la colección especificada.
es igual a​(Objeto o) Compara el objeto especificado con esta colección para la igualdad.
código hash() Devuelve el valor del código hash para esta colección.
esta vacio() Devuelve verdadero si esta colección no contiene elementos.
iterador() Devuelve un iterador sobre los elementos de esta colección.
flujoParalelo() Devuelve un Stream posiblemente paralelo con esta colección como fuente.
eliminar​(Objeto o) Elimina una sola instancia del elemento especificado de esta colección, si está presente (operación opcional).
removeAll​(Colección<?> c) Elimina todos los elementos de esta colección que también están contenidos en la colección especificada (operación opcional).
removeIf​(predicado<? filtro super E>) Elimina todos los elementos de esta colección que satisfacen el predicado dado.
retenerTodo​(Colección<?> c) Retiene solo los elementos de esta colección que están contenidos en la colección especificada (operación opcional).
Talla() Devuelve el número de elementos de esta colección.
divisor() Crea un Spliterator sobre los elementos de esta colección.
corriente() Devuelve un Stream secuencial con esta colección como fuente.
aArray() Devuelve una array que contiene todos los elementos de esta colección.
toArray​(IntFunction<T[]> generador) Devuelve una array que contiene todos los elementos de esta colección, utilizando la función de generador proporcionada para asignar la array devuelta.
a la Array​(T[] a) Devuelve una array que contiene todos los elementos de esta colección; el tipo de tiempo de ejecución de la array devuelta es el de la array especificada.

Métodos declarados en la interfaz java.lang.Iterable

MÉTODO

DESCRIPCIÓN

forEach​(Consumidor<? super T> acción) Realiza la acción dada para cada elemento del iterable hasta que se hayan procesado todos los elementos o la acción genere una excepción.

Referencia: https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/util/Collection.html

Publicación traducida automáticamente

Artículo escrito por Ganeshchowdharysadanala y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

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