Colecciones de Apache Commons - Guía rápida

Commons Collections aumenta el marco de colecciones de Java. Proporciona varias funciones para facilitar el manejo de la colección. Proporciona muchas interfaces, implementaciones y utilidades nuevas.

Las principales características de las colecciones comunes son las siguientes:

  • Bag - Bag interfaces simplifica las colecciones, que tienen múltiples copias de cada objeto.

  • BidiMap - Las interfaces BidiMap proporcionan mapas bidireccionales, que se pueden usar para buscar valores usando claves o claves usando valores.

  • MapIterator - La interfaz MapIterator proporciona una iteración simple y fácil sobre mapas.

  • Transforming Decorators - Los decoradores transformadores pueden alterar cada objeto de una colección a medida que se agrega a la colección.

  • Composite Collections - Se utilizan colecciones compuestas, donde se requiere que varias colecciones se manejen de manera uniforme.

  • Ordered Map - Los mapas ordenados conservan el orden en el que se agregan los elementos.

  • Ordered Set - Los conjuntos ordenados conservan el orden en el que se agregan los elementos.

  • Reference map - El mapa de referencia permite que los valores / claves sean recolectados basura bajo un estricto control.

  • Comparator implementations - Hay muchas implementaciones de Comparator disponibles.

  • Iterator implementations - Hay muchas implementaciones de iteradores disponibles.

  • Adapter Classes - Hay clases de adaptadores disponibles para convertir matrices y enumeraciones en colecciones.

  • Utilities- Hay utilidades disponibles para probar o crear propiedades típicas de la teoría de conjuntos de colecciones tales como unión, intersección. Apoya el cierre.

Configuración del entorno local

Si aún está dispuesto a configurar su entorno para el lenguaje de programación Java, esta sección lo guía sobre cómo descargar y configurar Java en su máquina. Siga los pasos que se mencionan a continuación para configurar el entorno.

Java SE está disponible gratuitamente desde el enlace https://www.oracle.com/technetwork/java/archive-139210.html Entonces, descarga una versión basada en su sistema operativo.

Siga las instrucciones para descargar Java y ejecutar el .exe para instalar Java en su máquina. Una vez que haya instalado Java en su máquina, deberá configurar las variables de entorno para que apunten a los directorios de instalación correctos.

Configuración de la ruta para Windows 2000 / XP

Suponemos que ha instalado Java en c:\Program Files\java\jdk directory

  • Haga clic derecho en 'Mi PC' y seleccione 'Propiedades'.

  • Haga clic en el botón 'Variables de entorno' en la pestaña 'Avanzado'.

  • Ahora, modifique la variable 'Ruta' para que también contenga la ruta al ejecutable de Java. Ejemplo, si la ruta está configurada actualmente en'C:\WINDOWS\SYSTEM32', luego cambia tu ruta para leer 'C:\WINDOWS\SYSTEM32;c:\Program Files\java\jdk\bin'.

Configuración de la ruta para Windows 95/98 / ME

Suponemos que ha instalado Java en c:\Program Files\java\jdk directory.

  • Edite el archivo 'C: \ autoexec.bat' y agregue la siguiente línea al final: 'SET PATH=%PATH%;C:\Program Files\java\jdk\bin'

Configuración de la ruta para Linux, UNIX, Solaris, FreeBSD

La variable de entorno PATH debe establecerse para que apunte a dónde se han instalado los binarios de Java. Consulte la documentación de su shell, si tiene problemas para hacer esto.

Por ejemplo, si usa bash como su shell, entonces agregaría la siguiente línea al final de su '.bashrc: export PATH=/path/to/java:$PATH'

Editores populares de Java

Para escribir sus programas Java, necesita un editor de texto. Hay muchos IDE sofisticados disponibles en el mercado. Pero por ahora, puede considerar uno de los siguientes:

  • Notepad - En una máquina con Windows, puede usar cualquier editor de texto simple como el Bloc de notas (recomendado para este tutorial), TextPad.

  • Netbeans - Es un IDE de Java de código abierto y gratuito, que se puede descargar desde https://netbeans.org.

  • Eclipse - También es un IDE de Java desarrollado por la comunidad de código abierto eclipse y se puede descargar desde https://www.eclipse.org/.

Descargar archivo de colecciones comunes

Descargue la última versión del archivo jar de Apache Common Collections desde commons-collections4-4.1-bin.zip. En el momento de escribir este tutorial, hemos descargadocommons-collections4-4.1-bin.zip y lo copié en C:\>Apache folder.

SO Nombre de archivo
Ventanas commons-collections4-4.1-bin.zip
Linux commons-collections4-4.1-bin.tar.gz
Mac commons-collections4-4.1-bin.tar.gz

Establecer el entorno de colecciones comunes de Apache

Selecciona el APACHE_HOMEvariable de entorno para apuntar a la ubicación del directorio base donde se almacena Apache jar en su máquina. Suponiendo que hemos extraído commons-collections4-4.1-bin.zip en la carpeta Apache en varios sistemas operativos de la siguiente manera:

SO Nombre de archivo
Ventanas Establezca la variable de entorno APACHE_HOME en C: \ Apache
Linux exportar APACHE_HOME = / usr / local / Apache
Mac exportar APACHE_HOME = / Library / Apache

Establecer la variable CLASSPATH

Selecciona el CLASSPATHvariable de entorno para apuntar a la ubicación del jar de Colecciones comunes. Suponiendo que ha almacenado commons-collections4-4.1-bin.zip en la carpeta Apache en varios sistemas operativos de la siguiente manera:

SO Salida
Ventanas Establezca la variable de entorno CLASSPATH en% CLASSPATH%;% APACHE_HOME% \ commons-collections4-4.1-bin.jar;.;
Linux export CLASSPATH = $ CLASSPATH: $ APACHE_HOME / commons-collections4-4.1-bin.jar :.
Mac export CLASSPATH = $ CLASSPATH: $ APACHE_HOME / commons-collections4-4.1-bin.jar :.

Se agregan nuevas interfaces a las bolsas de soporte. Una Bolsa define una colección que cuenta el número de veces que un objeto aparece en la colección. Por ejemplo, si una Bolsa contiene {a, a, b, c}, getCount ("a") devolverá 2 mientras que uniqueSet () devuelve los valores únicos.

Declaración de interfaz

A continuación se muestra la declaración de la interfaz org.apache.commons.collections4.Bag <E>:

public interface Bag<E>
   extends Collection<E>

Métodos

Los métodos para la inferencia de bolsas son los siguientes:

No Señor. Método y descripción
1

boolean add(E object)

(Violación) Agrega una copia del objeto especificado a la Bolsa.

2

boolean add(E object, int nCopies)

Agrega nCopias copias del objeto especificado a la Bolsa.

3

boolean containsAll(Collection<?> coll)

(Violación) Devuelve verdadero si la bolsa contiene todos los elementos de la colección dada, respetando la cardinalidad.

4

int getCount(Object object)

Devuelve el número de ocurrencias (cardinalidad) del objeto dado actualmente en la bolsa.

5

Iterator<E> iterator()

Devuelve un iterador sobre todo el conjunto de miembros, incluidas las copias debido a la cardinalidad.

6

boolean remove(Object object)

(Violación) Elimina todas las ocurrencias del objeto dado de la bolsa.

7

boolean remove(Object object, int nCopies)

Elimina copias nCopias del objeto especificado de la Bolsa.

8

boolean removeAll(Collection<?> coll)

(Violación) Elimina todos los elementos representados en la colección dada, respetando la cardinalidad.

9

boolean retainAll(Collection<?> coll)

(Violación) Retirar los miembros de la bolsa que no estén en la colección dada, respetando la cardinalidad.

10

int size()

Devuelve el número total de artículos de la bolsa en todos los tipos.

11

Set<E> uniqueSet()

Devuelve un conjunto de elementos únicos en la bolsa.

Métodos heredados

Esta interfaz hereda métodos de la siguiente interfaz:

  • java.util.Collection

Ejemplo de interfaz de bolsa

Un ejemplo de BagTester.java es el siguiente:

import org.apache.commons.collections4.Bag;
import org.apache.commons.collections4.bag.HashBag;
public class BagTester {
   public static void main(String[] args) {
      Bag<String> bag = new HashBag<>();
      //add "a" two times to the bag.
      bag.add("a" , 2);
      //add "b" one time to the bag.
      bag.add("b");
      //add "c" one time to the bag.
      bag.add("c");
      //add "d" three times to the bag.
      bag.add("d",3
      //get the count of "d" present in bag.
      System.out.println("d is present " + bag.getCount("d") + " times.");
      System.out.println("bag: " +bag);
      //get the set of unique values from the bag
      System.out.println("Unique Set: " +bag.uniqueSet());
      //remove 2 occurrences of "d" from the bag
      bag.remove("d",2);
      System.out.println("2 occurences of d removed from bag: " +bag);
      System.out.println("d is present " + bag.getCount("d") + " times.");
      System.out.println("bag: " +bag);
      System.out.println("Unique Set: " +bag.uniqueSet());
   }
}

Salida

Verá la siguiente salida:

d is present 3 times.
bag: [2:a,1:b,1:c,3:d]
Unique Set: [a, b, c, d]
2 occurences of d removed from bag: [2:a,1:b,1:c,1:d]
d is present 1 times.
bag: [2:a,1:b,1:c,1:d]
Unique Set: [a, b, c, d]

Se agregan nuevas interfaces para admitir mapas bidireccionales. Usando el mapa bidireccional, una clave se puede buscar usando el valor y el valor se puede buscar usando la clave fácilmente.

Declaración de interfaz

A continuación se muestra la declaración de org.apache.commons.collections4.BidiMap<K,V> interfaz -

public interface BidiMap<K,V>
   extends IterableMap<K,V>

Métodos

Los métodos para la interfaz BidiMap son los siguientes:

No Señor. Método y descripción
1

K getKey(Object value)

Obtiene la clave que actualmente está asignada al valor especificado.

2

BidiMap<V,K> inverseBidiMap()

Obtiene una vista de este mapa donde se invierten las claves y los valores.

3

V put(K key, V value)

Coloca el par clave-valor en el mapa, reemplazando cualquier par anterior.

4

K removeValue(Object value)

Elimina el par clave-valor que actualmente está asignado al valor especificado (operación opcional).

5

Set<V> values()

Devuelve una vista de conjunto de los valores contenidos en este mapa.

Métodos heredados

Esta interfaz hereda métodos de las siguientes interfaces:

  • org.apache.commons.collections4.Get

  • org.apache.commons.collections4.IterableGet

  • org.apache.commons.collections4.Put

  • java.util.Map

Ejemplo de interfaz BidiMap

Un ejemplo de BidiMapTester.java es el siguiente:

import org.apache.commons.collections4.BidiMap;
import org.apache.commons.collections4.bidimap.TreeBidiMap;
public class BidiMapTester {
   public static void main(String[] args) {
      BidiMap<String, String> bidi = new TreeBidiMap<>();
      bidi.put("One", "1");
      bidi.put("Two", "2");
      bidi.put("Three", "3");
      System.out.println(bidi.get("One"));
      System.out.println(bidi.getKey("1"));
      System.out.println("Original Map: " + bidi);
      bidi.removeValue("1");
      System.out.println("Modified Map: " + bidi);
      BidiMap<String, String> inversedMap = bidi.inverseBidiMap();
      System.out.println("Inversed Map: " + inversedMap);
   }
}

Salida

Cuando ejecute el código, verá el siguiente resultado:

1
One
Original Map: {One=1, Three=3, Two=2}
Modified Map: {Three=3, Two=2}
Inversed Map: {2=Two, 3=Three}

La interfaz de JDK Map es bastante difícil de iterar, ya que la iteración se realiza en EntrySet o en los objetos KeySet. MapIterator proporciona una iteración simple sobre Map. El siguiente ejemplo ilustra lo mismo.

Ejemplo de interfaz MapIterator

Un ejemplo de MapIteratorTester.java es el siguiente:

import org.apache.commons.collections4.IterableMap;
import org.apache.commons.collections4.MapIterator;
import org.apache.commons.collections4.map.HashedMap;
public class MapIteratorTester {
   public static void main(String[] args) {
      IterableMap<String, String> map = new HashedMap<>();
      map.put("1", "One");
      map.put("2", "Two");
      map.put("3", "Three");
      map.put("4", "Four");
      map.put("5", "Five");
      MapIterator<String, String> iterator = map.mapIterator();
      while (iterator.hasNext()) {
         Object key = iterator.next();
         Object value = iterator.getValue();
         System.out.println("key: " + key);
         System.out.println("Value: " + value);
         iterator.setValue(value + "_");
      }
      System.out.println(map);
   }
}

Salida

La salida se indica a continuación:

key: 3
Value: Three
key: 5
Value: Five
key: 2
Value: Two
key: 4
Value: Four
key: 1
Value: One
{3=Three_, 5=Five_, 2=Two_, 4=Four_, 1=One_}

OrderedMap es una nueva interfaz para que los mapas retengan el orden en el que se agregan los elementos. LinkedMap y ListOrderedMap son dos implementaciones disponibles. Esta interfaz admite el iterador de Map y permite la iteración en ambas direcciones hacia adelante o hacia atrás en un Map. El siguiente ejemplo ilustra lo mismo.

Ejemplo de interfaz MapIterator

Un ejemplo de OrderedMapTester.java es el que se muestra a continuación:

import org.apache.commons.collections4.OrderedMap;
import org.apache.commons.collections4.map.LinkedMap;
public class OrderedMapTester {
   public static void main(String[] args) {
      OrderedMap<String, String> map = new LinkedMap<String, String>();
      map.put("One", "1");
      map.put("Two", "2");
      map.put("Three", "3");
      System.out.println(map.firstKey());
      System.out.println(map.nextKey("One"));
      System.out.println(map.nextKey("Two"));
   }
}

Salida

El resultado será el siguiente:

One
Two
Three

La clase CollectionUtils de la biblioteca Apache Commons Collections proporciona varios métodos de utilidad para operaciones comunes que cubren una amplia gama de casos de uso. Ayuda a evitar escribir código repetitivo. Esta biblioteca es muy útil antes de jdk 8 ya que ahora se proporcionan funcionalidades similares en la API Stream de Java 8.

Verificar elementos no nulos

El método addIgnoreNull () de CollectionUtils se puede usar para garantizar que solo se agreguen valores no nulos a la colección.

Declaración

A continuación se muestra la declaración de

org.apache.commons.collections4.CollectionUtils.addIgnoreNull() método -

public static <T> boolean addIgnoreNull(Collection<T> collection, T object)

Parámetros

  • collection - La colección a agregar no debe ser nula.

  • object - El objeto a agregar, si es nulo no se agregará.

Valor devuelto

Cierto si la colección cambió.

Excepción

  • NullPointerException - Si la colección es nula.

Ejemplo

El siguiente ejemplo muestra el uso de org.apache.commons.collections4.CollectionUtils.addIgnoreNull()método. Estamos tratando de agregar un valor nulo y un valor no nulo de muestra.

import java.util.LinkedList;
import java.util.List;
import org.apache.commons.collections4.CollectionUtils;
public class CollectionUtilsTester {
   public static void main(String[] args) {
      List<String> list = new LinkedList<String>();
      CollectionUtils.addIgnoreNull(list, null);
      CollectionUtils.addIgnoreNull(list, "a");
      System.out.println(list);
      if(list.contains(null)) {
         System.out.println("Null value is present");
      } else {
         System.out.println("Null value is not present");
      }
   }
}

Salida

La salida se menciona a continuación:

[a]
Null value is not present

La clase CollectionUtils de la biblioteca Apache Commons Collections proporciona varios métodos de utilidad para operaciones comunes que cubren una amplia gama de casos de uso. Ayuda a evitar escribir código repetitivo. Esta biblioteca es muy útil antes de jdk 8 ya que ahora se proporcionan funcionalidades similares en la API Stream de Java 8.

Fusionando dos listas ordenadas

El método collate () de CollectionUtils se puede utilizar para fusionar dos listas ya ordenadas.

Declaración

A continuación se muestra la declaración de

org.apache.commons.collections4.CollectionUtils.collate() método -

public static <O extends Comparable<? super O>> List<O>
   collate(Iterable<? extends O> a, Iterable<? extends O> b)

Parámetros

  • a - La primera colección, no debe ser nula.

  • b - La segunda colección, no debe ser nula.

Valor devuelto

Una nueva lista ordenada, que contiene los elementos de la Colección ay b.

Excepción

  • NullPointerException - Si alguna de las colecciones es nula.

Ejemplo

El siguiente ejemplo muestra el uso de org.apache.commons.collections4.CollectionUtils.collate()método. Combinaremos dos listas ordenadas y luego imprimiremos la lista combinada y ordenada.

import java.util.Arrays;
import java.util.List;
import org.apache.commons.collections4.CollectionUtils;
public class CollectionUtilsTester {
   public static void main(String[] args) {
      List<String> sortedList1 = Arrays.asList("A","C","E");
      List<String> sortedList2 = Arrays.asList("B","D","F");
      List<String> mergedList = CollectionUtils.collate(sortedList1, sortedList2);
      System.out.println(mergedList);
   }
}

Salida

La salida es la siguiente:

[A, B, C, D, E, F]

La clase CollectionUtils de la biblioteca Apache Commons Collections proporciona varios métodos de utilidad para operaciones comunes que cubren una amplia gama de casos de uso. Ayuda a evitar escribir código repetitivo. Esta biblioteca es muy útil antes de jdk 8 ya que ahora se proporcionan funcionalidades similares en la API Stream de Java 8.

Transformar una lista

El método collect () de CollectionUtils se puede utilizar para transformar una lista de un tipo de objetos en una lista de diferentes tipos de objetos.

Declaración

A continuación se muestra la declaración de

org.apache.commons.collections4.CollectionUtils.collect() método -

public static <I,O> Collection<O> collect(Iterable<I> inputCollection,
   Transformer<? super I,? extends O> transformer)

Parámetros

  • inputCollection - La colección de la que se obtendrá la entrada no puede ser nula.

  • Transformer - El transformador a utilizar, puede ser nulo.

Valor devuelto

El resultado transformado (nueva lista).

Excepción

  • NullPointerException - Si la colección de entrada es nula.

Ejemplo

El siguiente ejemplo muestra el uso de org.apache.commons.collections4.CollectionUtils.collect()método. Transformaremos una lista de cadenas en una lista de enteros analizando el valor entero de String.

import java.util.Arrays;
import java.util.List;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.collections4.Transformer;
public class CollectionUtilsTester {
   public static void main(String[] args) {
      List<String> stringList = Arrays.asList("1","2","3");
      List<Integer> integerList = (List<Integer>) CollectionUtils.collect(
         stringList, new Transformer<String, Integer>() {
         @Override
         public Integer transform(String input) {
            return Integer.parseInt(input);
         }
      });
      System.out.println(integerList);
   }
}

Salida

Cuando use el código, obtendrá el siguiente código:

[1, 2, 3]

La clase CollectionUtils de la biblioteca Apache Commons Collections proporciona varios métodos de utilidad para operaciones comunes que cubren una amplia gama de casos de uso. Ayuda a evitar escribir código repetitivo. Esta biblioteca es muy útil antes de jdk 8 ya que ahora se proporcionan funcionalidades similares en la API Stream de Java 8.

método filter ()

El método filter () de CollectionUtils se puede usar para filtrar una lista para eliminar objetos que no satisfacen la condición proporcionada por el predicado pasado.

Declaración

A continuación se muestra la declaración de

org.apache.commons.collections4.CollectionUtils.filter() método -

public static <T> boolean filter(Iterable<T> collection,
   Predicate<? super T> predicate)

Parámetros

  • collection - La colección de la que se obtendrá la entrada no puede ser nula.

  • predicate - El predicado a utilizar como filtro, puede ser nulo.

Valor devuelto

Verdadero si esta llamada modifica la colección, falso en caso contrario.

Ejemplo

El siguiente ejemplo muestra el uso de org.apache.commons.collections4.CollectionUtils.filter()método. Filtraremos una lista de enteros para obtener solo números pares.

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.collections4.Predicate;
public class CollectionUtilsTester {
   public static void main(String[] args) {
      List<Integer> integerList = new ArrayList<Integer>(); 
      integerList.addAll(Arrays.asList(1,2,3,4,5,6,7,8));
      System.out.println("Original List: " + integerList);
      CollectionUtils.filter(integerList, new Predicate<Integer>() {
         @Override
         public boolean evaluate(Integer input) {
            if(input.intValue() % 2 == 0) {
               return true;
            }
            return false;
         }
      });
      System.out.println("Filtered List (Even numbers): " + integerList);
   }
}

Salida

Producirá el siguiente resultado:

Original List: [1, 2, 3, 4, 5, 6, 7, 8]
Filtered List (Even numbers): [2, 4, 6, 8]

método filterInverse ()

El método filterInverse () de CollectionUtils se puede usar para filtrar una lista para eliminar objetos, que satisfacen la condición proporcionada por el predicado pasado.

Declaración

A continuación se muestra la declaración de

org.apache.commons.collections4.CollectionUtils.filterInverse() método -

public static <T> boolean filterInverse(
   Iterable<T> collection, Predicate<? super T> predicate)

Parámetros

  • collection - La colección de la que se obtendrá la entrada no puede ser nula.

  • predicate - El predicado a utilizar como filtro, puede ser nulo.

Valor devuelto

Verdadero si esta llamada modifica la colección, falso en caso contrario.

Ejemplo

El siguiente ejemplo muestra el uso de org.apache.commons.collections4.CollectionUtils.filterInverse()método. Filtraremos una lista de enteros para obtener solo números impares.

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.collections4.Predicate;
public class CollectionUtilsTester {
   public static void main(String[] args) {
      List<Integer> integerList = new ArrayList<Integer>(); 
      integerList.addAll(Arrays.asList(1,2,3,4,5,6,7,8));
      System.out.println("Original List: " + integerList); 
      CollectionUtils.filterInverse(integerList, new Predicate<Integer>() {
         @Override
         public boolean evaluate(Integer input) {
            if(input.intValue() % 2 == 0) {
               return true;
            }
            return false;
         }
      });
      System.out.println("Filtered List (Odd numbers): " + integerList);
   }
}

Salida

El resultado es el que se indica a continuación:

Original List: [1, 2, 3, 4, 5, 6, 7, 8]
Filtered List (Odd numbers): [1, 3, 5, 7]

La clase CollectionUtils de la biblioteca Apache Commons Collections proporciona varios métodos de utilidad para operaciones comunes que cubren una amplia gama de casos de uso. Ayuda a evitar escribir código repetitivo. Esta biblioteca es muy útil antes de jdk 8 ya que ahora se proporcionan funcionalidades similares en la API Stream de Java 8.

Comprobando la lista no vacía

El método isNotEmpty () de CollectionUtils se puede usar para verificar si una lista no está vacía sin preocuparse por la lista nula. Por lo tanto, no es necesario colocar una verificación nula en todas partes antes de verificar el tamaño de la lista.

Declaración

A continuación se muestra la declaración de

org.apache.commons.collections4.CollectionUtils.isNotEmpty() método -

public static boolean isNotEmpty(Collection<?> coll)

Parámetros

  • coll - El cobro a comprobar, puede ser nulo.

Valor devuelto

Verdadero si no es nulo y no está vacío.

Ejemplo

El siguiente ejemplo muestra el uso de org.apache.commons.collections4.CollectionUtils.isNotEmpty()método. Comprobaremos que una lista esté vacía o no.

import java.util.List;
import org.apache.commons.collections4.CollectionUtils;
public class CollectionUtilsTester {
   public static void main(String[] args) {
      List<String> list = getList();
      System.out.println("Non-Empty List Check: " + checkNotEmpty1(list));
      System.out.println("Non-Empty List Check: " + checkNotEmpty1(list));
   }
   static List<String> getList() {
      return null;
   }
   static boolean checkNotEmpty1(List<String> list) {
      return !(list == null || list.isEmpty());
   }
   static boolean checkNotEmpty2(List<String> list) {
      return CollectionUtils.isNotEmpty(list);
   }
}

Salida

La salida se da a continuación:

Non-Empty List Check: false
Non-Empty List Check: false

Comprobando lista vacía

El método isEmpty () de CollectionUtils se puede usar para verificar si una lista está vacía sin preocuparse por la lista nula. Por lo tanto, no es necesario colocar una verificación nula en todas partes antes de verificar el tamaño de la lista.

Declaración

A continuación se muestra la declaración de

org.apache.commons.collections4.CollectionUtils.isEmpty() método -

public static boolean isEmpty(Collection<?> coll)

Parámetros

  • coll - El cobro a comprobar, puede ser nulo.

Valor devuelto

Verdadero si está vacío o es nulo.

Ejemplo

El siguiente ejemplo muestra el uso de org.apache.commons.collections4.CollectionUtils.isEmpty()método. Comprobaremos que una lista esté vacía o no.

import java.util.List;
import org.apache.commons.collections4.CollectionUtils;
public class CollectionUtilsTester {
   public static void main(String[] args) {
      List<String> list = getList();
      System.out.println("Empty List Check: " + checkEmpty1(list));
      System.out.println("Empty List Check: " + checkEmpty1(list));
   }
   static List<String> getList() {
      return null;
   }
   static boolean checkEmpty1(List<String> list) {
      return (list == null || list.isEmpty());
   }
   static boolean checkEmpty2(List<String> list) {
      return CollectionUtils.isEmpty(list);
   }
}

Salida

A continuación se muestra la salida del código:

Empty List Check: true
Empty List Check: true

La clase CollectionUtils de la biblioteca Apache Commons Collections proporciona varios métodos de utilidad para operaciones comunes que cubren una amplia gama de casos de uso. Ayuda a evitar escribir código repetitivo. Esta biblioteca es muy útil antes de jdk 8 ya que ahora se proporcionan funcionalidades similares en la API Stream de Java 8.

Comprobando sublista

El método isSubCollection () de CollectionUtils se puede usar para verificar si una colección contiene la colección dada o no.

Declaración

A continuación se muestra la declaración de

org.apache.commons.collections4.CollectionUtils.isSubCollection() método -

public static boolean isSubCollection(
   Collection<?> a, Collection<?> b)

Parámetros

  • a - La primera (sub) colección, no debe ser nula.

  • b - La segunda (super) colección, no debe ser nula.

Valor devuelto

Verdadero si y solo si a es una subcolección de b.

Ejemplo

El siguiente ejemplo muestra el uso de org.apache.commons.collections4.CollectionUtils.isSubCollection()método. Comprobaremos que una lista sea parte de otra lista o no.

import java.util.Arrays;
import java.util.List;
import org.apache.commons.collections4.CollectionUtils;
public class CollectionUtilsTester {
   public static void main(String[] args) {
      //checking inclusion
      List<String> list1 = Arrays.asList("A","A","A","C","B","B");
      List<String> list2 = Arrays.asList("A","A","B","B");
      System.out.println("List 1: " + list1);
      System.out.println("List 2: " + list2);
      System.out.println("Is List 2 contained in List 1: " + 
         CollectionUtils.isSubCollection(list2, list1));
   }
}

Salida

Recibirá el siguiente resultado:

List 1: [A, A, A, C, B, B]
List 2: [A, A, B, B]
Is List 2 contained in List 1: true

La clase CollectionUtils de la biblioteca Apache Commons Collections proporciona varios métodos de utilidad para operaciones comunes que cubren una amplia gama de casos de uso. Ayuda a evitar escribir código repetitivo. Esta biblioteca es muy útil antes de jdk 8 ya que ahora se proporcionan funcionalidades similares en la API Stream de Java 8.

Comprobando intersección

El método intersection () de CollectionUtils se puede utilizar para obtener los objetos comunes entre dos colecciones (intersección).

Declaración

A continuación se muestra la declaración de org.apache.commons.collections4.CollectionUtils.intersection() método -

public static <O> Collection<O> intersection(Iterable<? extends O> a,
   Iterable<? extends O> b)

Parámetros

  • a - La primera (sub) colección, no debe ser nula.

  • b - La segunda (super) colección, no debe ser nula.

Valor devuelto

La intersección de las dos colecciones.

Ejemplo

El siguiente ejemplo muestra el uso de org.apache.commons.collections4.CollectionUtils.intersection()método. Obtendremos la intersección de dos listas.

import java.util.Arrays;
import java.util.List;
import org.apache.commons.collections4.CollectionUtils;
public class CollectionUtilsTester {
   public static void main(String[] args) {
      //checking inclusion
      List<String> list1 = Arrays.asList("A","A","A","C","B","B");
      List<String> list2 = Arrays.asList("A","A","B","B");
      System.out.println("List 1: " + list1);
      System.out.println("List 2: " + list2);
      System.out.println("Commons Objects of List 1 and List 2: "
         + CollectionUtils.intersection(list1, list2));
   }
}

Salida

Cuando ejecute el código, verá el siguiente resultado:

List 1: [A, A, A, C, B, B]
List 2: [A, A, B, B]
Commons Objects of List 1 and List 2: [A, A, B, B]

La clase CollectionUtils de la biblioteca Apache Commons Collections proporciona varios métodos de utilidad para operaciones comunes que cubren una amplia gama de casos de uso. Ayuda a evitar escribir código repetitivo. Esta biblioteca es muy útil antes de jdk 8 ya que ahora se proporcionan funcionalidades similares en la API Stream de Java 8.

Comprobación de la sustracción

El método subtract () de CollectionUtils se puede utilizar para obtener la nueva colección restando objetos de una colección de otra.

Declaración

A continuación se muestra la declaración de org.apache.commons.collections4.CollectionUtils.subtract() método -

public static <O> Collection<O> subtract(Iterable<? extends O> a,
   Iterable<? extends O> b)

Parámetros

  • a - La colección a restar, no debe ser nula.

  • b - La colección a restar, no debe ser nula.

Valor devuelto

Una nueva colección con los resultados.

Ejemplo

El siguiente ejemplo muestra el uso de org.apache.commons.collections4.CollectionUtils.subtract()método. Obtendremos la resta de dos listas.

import java.util.Arrays;
import java.util.List;
import org.apache.commons.collections4.CollectionUtils;
public class CollectionUtilsTester {
   public static void main(String[] args) {
      //checking inclusion
      List<String> list1 = Arrays.asList("A","A","A","C","B","B");
      List<String> list2 = Arrays.asList("A","A","B","B");
      System.out.println("List 1: " + list1);
      System.out.println("List 2: " + list2);
      System.out.println("List 1 - List 2: " + CollectionUtils.subtract(list1, list2));
   }
}

Salida

Cuando ejecute el código anterior, debería ver el siguiente resultado:

List 1: [A, A, A, C, B, B]
List 2: [A, A, B, B]
List 1 - List 2: [A, C]

La clase CollectionUtils de la biblioteca Apache Commons Collections proporciona varios métodos de utilidad para operaciones comunes que cubren una amplia gama de casos de uso. Ayuda a evitar escribir código repetitivo. Esta biblioteca es muy útil antes de jdk 8 ya que ahora se proporcionan funcionalidades similares en la API Stream de Java 8.

Comprobación de unión

El método union () de CollectionUtils se puede utilizar para obtener la unión de dos colecciones.

Declaración

A continuación se muestra la declaración de org.apache.commons.collections4.CollectionUtils.union() método -

public static <O> Collection<O> union(
   Iterable<? extends O> a, Iterable<? extends O> b)

Parámetros

  • a - La primera colección, no debe ser nula.

  • b - La segunda colección, no debe ser nula.

Valor devuelto

La unión de las dos colecciones.

Ejemplo

El siguiente ejemplo muestra el uso de org.apache.commons.collections4.CollectionUtils.union()método. Obtendremos la unión de dos listas.

import java.util.Arrays;
import java.util.List;
import org.apache.commons.collections4.CollectionUtils;
public class CollectionUtilsTester {
   public static void main(String[] args) {
      //checking inclusion
      List<String> list1 = Arrays.asList("A","A","A","C","B","B");
      List<String> list2 = Arrays.asList("A","A","B","B");
      System.out.println("List 1: " + list1);
      System.out.println("List 2: " + list2);
      System.out.println("Union of List 1 and List 2: "
         + CollectionUtils.union(list1, list2));
   }
}

Salida

Esto produce la siguiente salida:

List 1: [A, A, A, C, B, B]
List 2: [A, A, B, B]
Union of List 1 and List 2: [A, A, A, B, B, C]