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]