Coleções Apache Commons - Guia rápido

O Commons Collections aumenta o Java Collections Framework. Ele fornece vários recursos para facilitar o manuseio da coleção. Ele fornece muitas novas interfaces, implementações e utilitários.

As principais características das Commons Collections são as seguintes -

  • Bag - As interfaces do saco simplificam as coleções, que possuem várias cópias de cada objeto.

  • BidiMap - As interfaces BidiMap fornecem mapas bidirecionais, que podem ser usados ​​para pesquisar valores usando chaves ou chaves usando valores.

  • MapIterator - A interface MapIterator fornece iteração simples e fácil sobre mapas.

  • Transforming Decorators - Os decoradores transformadores podem alterar todos os objetos de uma coleção conforme e quando são adicionados à coleção.

  • Composite Collections - Coleções compostas são usadas, onde várias coleções devem ser tratadas uniformemente.

  • Ordered Map - Mapas ordenados mantêm a ordem em que os elementos são adicionados.

  • Ordered Set - Os conjuntos ordenados mantêm a ordem em que os elementos são adicionados.

  • Reference map - O mapa de referência permite que chaves / valores sejam coletados como lixo sob controle próximo.

  • Comparator implementations - Muitas implementações de Comparator estão disponíveis.

  • Iterator implementations - Muitas implementações de Iterator estão disponíveis.

  • Adapter Classes - As classes de adaptador estão disponíveis para converter array e enumerações em coleções.

  • Utilities- Os utilitários estão disponíveis para testar ou criar propriedades típicas da teoria dos conjuntos de coleções, como união, interseção. Oferece suporte ao fechamento.

Configuração de ambiente local

Se você ainda deseja configurar seu ambiente para a linguagem de programação Java, esta seção o orienta sobre como fazer download e configurar o Java em sua máquina. Siga as etapas mencionadas abaixo para configurar o ambiente.

Java SE está disponível gratuitamente no link https://www.oracle.com/technetwork/java/archive-139210.html Portanto, você baixa uma versão com base em seu sistema operacional.

Siga as instruções para baixar o Java e execute o .exe para instalar o Java em sua máquina. Depois de instalar o Java em sua máquina, você precisará definir as variáveis ​​de ambiente para apontar para os diretórios de instalação corretos.

Configurando o caminho para Windows 2000 / XP

Estamos assumindo que você instalou o Java em c:\Program Files\java\jdk directory

  • Clique com o botão direito em 'Meu Computador' e selecione 'Propriedades'.

  • Clique no botão 'Variáveis ​​de ambiente' na guia 'Avançado'.

  • Agora, altere a variável 'Path' para que também contenha o caminho para o executável Java. Exemplo, se o caminho está atualmente definido para'C:\WINDOWS\SYSTEM32', então mude seu caminho para ler 'C:\WINDOWS\SYSTEM32;c:\Program Files\java\jdk\bin'.

Configurando o Caminho para Windows 95/98 / ME

Estamos assumindo que você instalou o Java em c:\Program Files\java\jdk directory.

  • Edite o arquivo 'C: \ autoexec.bat' e adicione a seguinte linha no final - 'SET PATH=%PATH%;C:\Program Files\java\jdk\bin'

Configurando o caminho para Linux, UNIX, Solaris, FreeBSD

A variável de ambiente PATH deve ser definida para apontar para onde os binários Java foram instalados. Consulte a documentação do shell, se tiver problemas para fazer isso.

Exemplo, se você usar o bash como seu shell, então você adicionaria a seguinte linha ao final de seu '.bashrc: export PATH=/path/to/java:$PATH'

Editores Java populares

Para escrever seus programas Java, você precisa de um editor de texto. Existem muitos IDEs sofisticados disponíveis no mercado. Mas, por agora, você pode considerar um dos seguintes -

  • Notepad - Na máquina Windows, você pode usar qualquer editor de texto simples como o Notepad (recomendado para este tutorial), TextPad.

  • Netbeans - É um IDE Java de código aberto e gratuito, que pode ser baixado de https://netbeans.org.

  • Eclipse - Também é um IDE Java desenvolvido pela comunidade de código aberto eclipse e pode ser baixado de https://www.eclipse.org/.

Baixar arquivo de coleções comuns

Baixe a versão mais recente do arquivo jar do Apache Common Collections em commons-collections4-4.1-bin.zip. No momento em que escrevo este tutorial, baixamoscommons-collections4-4.1-bin.zip e copiei em C:\>Apache folder.

SO Nome do arquivo
janelas commons-collections4-4.1-bin.zip
Linux commons-Collections4-4.1-bin.tar.gz
Mac commons-Collections4-4.1-bin.tar.gz

Definir o ambiente de coleções comuns do Apache

Colocou o APACHE_HOMEvariável de ambiente para apontar para o local do diretório base onde o jar do Apache está armazenado em sua máquina. Supondo que extraímos commons-collections4-4.1-bin.zip na pasta Apache em vários sistemas operacionais da seguinte forma -

SO Nome do arquivo
janelas Defina a variável de ambiente APACHE_HOME para C: \ Apache
Linux export APACHE_HOME = / usr / local / Apache
Mac export APACHE_HOME = / Library / Apache

Definir variável CLASSPATH

Colocou o CLASSPATHvariável de ambiente para apontar para o local do jar de coleções comuns. Supondo que você tenha armazenado commons-collections4-4.1-bin.zip na pasta Apache em vários sistemas operacionais da seguinte forma -

SO Resultado
janelas Defina a variável de ambiente CLASSPATH como% 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 :.

Novas interfaces são adicionadas aos sacos de suporte. Um Bag define uma coleção que conta o número de vezes que um objeto aparece na coleção. Por exemplo, se um Bag contém {a, a, b, c} então getCount ("a") retornará 2 enquanto uniqueSet () retorna os valores únicos.

Declaração de Interface

A seguir está a declaração para a interface org.apache.commons.collections4.Bag <E> -

public interface Bag<E>
   extends Collection<E>

Métodos

Os métodos para inferência de bolsa são os seguintes -

Sr. Não. Método e Descrição
1

boolean add(E object)

(Violação) Adiciona uma cópia do objeto especificado ao Saco.

2

boolean add(E object, int nCopies)

Adiciona nCopies cópias do objeto especificado ao Bag.

3

boolean containsAll(Collection<?> coll)

(Violação) Retorna verdadeiro se a bolsa contiver todos os elementos da coleção fornecida, respeitando a cardinalidade.

4

int getCount(Object object)

Retorna o número de ocorrências (cardinalidade) do objeto fornecido atualmente na bolsa.

5

Iterator<E> iterator()

Retorna um Iterador sobre todo o conjunto de membros, incluindo cópias devido à cardinalidade.

6

boolean remove(Object object)

(Violação) Remove todas as ocorrências do objeto fornecido da bolsa.

7

boolean remove(Object object, int nCopies)

Remove nCopies cópias do objeto especificado do Bag.

8

boolean removeAll(Collection<?> coll)

(Violação) Remova todos os elementos representados na coleção em questão, respeitando a cardinalidade.

9

boolean retainAll(Collection<?> coll)

(Violação) Retirar quaisquer membros da bolsa que não façam parte do acervo, respeitando a cardinalidade.

10

int size()

Retorna o número total de itens na sacola em todos os tipos.

11

Set<E> uniqueSet()

Retorna um conjunto de elementos exclusivos na bolsa.

Métodos herdados

Esta interface herda métodos da seguinte interface -

  • java.util.Collection

Exemplo de interface de bolsa

Um exemplo de BagTester.java é o seguinte -

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());
   }
}

Resultado

Você verá a seguinte saída -

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]

Novas interfaces são adicionadas para suportar o mapa bidirecional. Usando o mapa bidirecional, uma chave pode ser pesquisada usando valor e o valor pode ser pesquisado usando a chave facilmente.

Declaração de Interface

A seguir está a declaração para org.apache.commons.collections4.BidiMap<K,V> interface -

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

Métodos

Os métodos para a interface BidiMap são os seguintes -

Sr. Não. Método e Descrição
1

K getKey(Object value)

Obtém a chave atualmente mapeada para o valor especificado.

2

BidiMap<V,K> inverseBidiMap()

Obtém uma visão deste mapa onde as chaves e valores são invertidos.

3

V put(K key, V value)

Coloca o par de valores-chave no mapa, substituindo qualquer par anterior.

4

K removeValue(Object value)

Remove o par de valores-chave que está atualmente mapeado para o valor especificado (operação opcional).

5

Set<V> values()

Retorna uma visualização Set dos valores contidos neste mapa.

Métodos herdados

Esta interface herda métodos das seguintes interfaces -

  • org.apache.commons.collections4.Get

  • org.apache.commons.collections4.IterableGet

  • org.apache.commons.collections4.Put

  • java.util.Map

Exemplo de interface BidiMap

Um exemplo de BidiMapTester.java é o seguinte -

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);
   }
}

Resultado

Ao executar o código, você verá a seguinte saída -

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

A interface do Mapa JDK é muito difícil de iterar como Iteração a ser feita no EntrySet ou nos objetos KeySet. MapIterator fornece iteração simples sobre Map. O exemplo a seguir ilustra o mesmo.

Exemplo de interface MapIterator

Um exemplo para MapIteratorTester.java é o seguinte -

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);
   }
}

Resultado

O resultado é declarado abaixo -

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 é uma nova interface para mapas reter a ordem na qual os elementos são adicionados. LinkedMap e ListOrderedMap são duas implementações disponíveis. Essa interface suporta o iterador de Map e permite a iteração em ambas as direções para frente ou para trás em um Mapa. O exemplo a seguir ilustra o mesmo.

Exemplo de interface MapIterator

Um exemplo de OrderedMapTester.java é fornecido abaixo -

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"));
   }
}

Resultado

O resultado será o seguinte -

One
Two
Three

A classe CollectionUtils da biblioteca de coleções do Apache Commons fornece vários métodos utilitários para operações comuns que abrangem uma ampla gama de casos de uso. Isso ajuda a evitar a escrita de código clichê. Essa biblioteca é muito útil antes do jdk 8, pois funcionalidades semelhantes agora são fornecidas na API de fluxo do Java 8.

Verifique se há elementos não nulos

O método addIgnoreNull () de CollectionUtils pode ser usado para garantir que apenas valores não nulos sejam adicionados à coleção.

Declaração

A seguir está a declaração para

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

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

Parâmetros

  • collection - A coleção a ser adicionada não deve ser nula.

  • object - O objeto a ser adicionado, se nulo, não será adicionado.

Valor de retorno

Verdadeiro se a coleção mudou.

Exceção

  • NullPointerException - Se a coleção for nula.

Exemplo

O exemplo a seguir mostra o uso de org.apache.commons.collections4.CollectionUtils.addIgnoreNull()método. Estamos tentando adicionar um valor nulo e um valor não nulo de amostra.

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");
      }
   }
}

Resultado

A saída é mencionada abaixo -

[a]
Null value is not present

A classe CollectionUtils da biblioteca de coleções do Apache Commons fornece vários métodos utilitários para operações comuns que abrangem uma ampla gama de casos de uso. Isso ajuda a evitar a escrita de código clichê. Essa biblioteca é muito útil antes do jdk 8, pois funcionalidades semelhantes agora são fornecidas na API de fluxo do Java 8.

Mesclando duas listas classificadas

O método collate () de CollectionUtils pode ser usado para mesclar duas listas já classificadas.

Declaração

A seguir está a declaração para

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 - A primeira coleção não deve ser nula.

  • b - A segunda coleção não deve ser nula.

Valor de retorno

Uma nova lista classificada, contendo os elementos da Coleção a e b.

Exceção

  • NullPointerException - Se alguma das coleções for nula.

Exemplo

O exemplo a seguir mostra o uso de org.apache.commons.collections4.CollectionUtils.collate()método. Vamos mesclar duas listas classificadas e, em seguida, imprimir a lista combinada e classificada.

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);
   }
}

Resultado

O resultado é o seguinte -

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

A classe CollectionUtils da biblioteca de coleções do Apache Commons fornece vários métodos utilitários para operações comuns que abrangem uma ampla gama de casos de uso. Isso ajuda a evitar a escrita de código clichê. Essa biblioteca é muito útil antes do jdk 8, pois funcionalidades semelhantes agora são fornecidas na API de fluxo do Java 8.

Transformando uma lista

O método collect () de CollectionUtils pode ser usado para transformar uma lista de um tipo de objetos em uma lista de diferentes tipos de objetos.

Declaração

A seguir está a declaração para

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 - A coleção da qual obter a entrada não pode ser nula.

  • Transformer - O transformador a ser usado pode ser nulo.

Valor de retorno

O resultado transformado (nova lista).

Exceção

  • NullPointerException - Se a coleção de entrada for nula.

Exemplo

O exemplo a seguir mostra o uso de org.apache.commons.collections4.CollectionUtils.collect()método. Vamos transformar uma lista de string em lista de inteiros, analisando o valor inteiro 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);
   }
}

Resultado

Ao usar o código, você obterá o seguinte código -

[1, 2, 3]

A classe CollectionUtils da biblioteca de coleções do Apache Commons fornece vários métodos utilitários para operações comuns que abrangem uma ampla gama de casos de uso. Isso ajuda a evitar a escrita de código clichê. Essa biblioteca é muito útil antes do jdk 8, pois funcionalidades semelhantes agora são fornecidas na API de fluxo do Java 8.

método filter ()

O método filter () de CollectionUtils pode ser usado para filtrar uma lista para remover objetos que não satisfaçam a condição fornecida pelo predicado passado.

Declaração

A seguir está a declaração para

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

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

Parâmetros

  • collection - A coleção da qual obter a entrada não pode ser nula.

  • predicate - O predicado a ser usado como filtro pode ser nulo.

Valor de retorno

Verdadeiro se a coleção for modificada por esta chamada, falso caso contrário.

Exemplo

O exemplo a seguir mostra o uso de org.apache.commons.collections4.CollectionUtils.filter()método. Filtraremos uma lista de inteiros para obter apenas 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);
   }
}

Resultado

Isso produzirá o seguinte resultado -

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

método filterInverse ()

O método filterInverse () de CollectionUtils pode ser usado para filtrar uma lista para remover objetos, que satisfazem a condição fornecida pelo predicado passado.

Declaração

A seguir está a declaração para

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

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

Parâmetros

  • collection - A coleção da qual obter a entrada não pode ser nula.

  • predicate - O predicado a ser usado como filtro pode ser nulo.

Valor de retorno

Verdadeiro se a coleção for modificada por esta chamada, falso caso contrário.

Exemplo

O exemplo a seguir mostra o uso de org.apache.commons.collections4.CollectionUtils.filterInverse()método. Filtraremos uma lista de inteiros para obter apenas números ímpares.

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);
   }
}

Resultado

O resultado é como indicado abaixo -

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

A classe CollectionUtils da biblioteca de coleções do Apache Commons fornece vários métodos utilitários para operações comuns que abrangem uma ampla gama de casos de uso. Isso ajuda a evitar a escrita de código clichê. Essa biblioteca é muito útil antes do jdk 8, pois funcionalidades semelhantes agora são fornecidas na API de fluxo do Java 8.

Verificando a lista não vazia

O método isNotEmpty () de CollectionUtils pode ser usado para verificar se uma lista não está vazia sem se preocupar com a lista nula. Portanto, a verificação de nulos não precisa ser colocada em todos os lugares antes de verificar o tamanho da lista.

Declaração

A seguir está a declaração para

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

public static boolean isNotEmpty(Collection<?> coll)

Parâmetros

  • coll - A coleção a ser verificada pode ser nula.

Valor de retorno

Verdadeiro se não nulo e não vazio.

Exemplo

O exemplo a seguir mostra o uso de org.apache.commons.collections4.CollectionUtils.isNotEmpty()método. Verificaremos se a lista está vazia ou não.

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);
   }
}

Resultado

O resultado é dado abaixo -

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

Verificando lista vazia

O método isEmpty () de CollectionUtils pode ser usado para verificar se uma lista está vazia sem se preocupar com a lista nula. Portanto, a verificação de nulos não precisa ser colocada em todos os lugares antes de verificar o tamanho da lista.

Declaração

A seguir está a declaração para

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

public static boolean isEmpty(Collection<?> coll)

Parâmetros

  • coll - A coleção a ser verificada pode ser nula.

Valor de retorno

Verdadeiro se vazio ou nulo.

Exemplo

O exemplo a seguir mostra o uso de org.apache.commons.collections4.CollectionUtils.isEmpty()método. Verificaremos se a lista está vazia ou não.

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);
   }
}

Resultado

A seguir está a saída do código -

Empty List Check: true
Empty List Check: true

A classe CollectionUtils da biblioteca de coleções do Apache Commons fornece vários métodos utilitários para operações comuns que abrangem uma ampla gama de casos de uso. Isso ajuda a evitar a escrita de código clichê. Essa biblioteca é muito útil antes do jdk 8, pois funcionalidades semelhantes agora são fornecidas na API de fluxo do Java 8.

Verificando a sublista

O método isSubCollection () de CollectionUtils pode ser usado para verificar se uma coleção contém a coleção fornecida ou não.

Declaração

A seguir está a declaração para

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

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

Parâmetros

  • a - A primeira (sub) coleção não deve ser nula.

  • b - A segunda (super) coleção não deve ser nula.

Valor de retorno

Verdadeiro se e somente se a for uma subcoleção de b.

Exemplo

O exemplo a seguir mostra o uso de org.apache.commons.collections4.CollectionUtils.isSubCollection()método. Vamos verificar se uma lista faz parte de outra lista ou não.

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));
   }
}

Resultado

Você receberá a seguinte saída -

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

A classe CollectionUtils da biblioteca de coleções do Apache Commons fornece vários métodos utilitários para operações comuns que abrangem uma ampla gama de casos de uso. Isso ajuda a evitar a escrita de código clichê. Essa biblioteca é muito útil antes do jdk 8, pois funcionalidades semelhantes agora são fornecidas na API de fluxo do Java 8.

Verificando cruzamento

O método intersection () de CollectionUtils pode ser usado para obter os objetos comuns entre duas coleções (intersecção).

Declaração

A seguir está a declaração para 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 - A primeira (sub) coleção não deve ser nula.

  • b - A segunda (super) coleção não deve ser nula.

Valor de retorno

A interseção das duas coleções.

Exemplo

O exemplo a seguir mostra o uso de org.apache.commons.collections4.CollectionUtils.intersection()método. Obteremos a interseção de duas 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));
   }
}

Resultado

Ao executar o código, você verá a seguinte saída -

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]

A classe CollectionUtils da biblioteca de coleções do Apache Commons fornece vários métodos utilitários para operações comuns que abrangem uma ampla gama de casos de uso. Isso ajuda a evitar a escrita de código clichê. Essa biblioteca é muito útil antes do jdk 8, pois funcionalidades semelhantes agora são fornecidas na API de fluxo do Java 8.

Verificando a Substração

O método subtract () de CollectionUtils pode ser usado para obter a nova coleção subtraindo objetos de uma coleção de outra.

Declaração

A seguir está a declaração para 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 - A coleção da qual subtrair não deve ser nula.

  • b - A coleção a ser subtraída não deve ser nula.

Valor de retorno

Uma nova coleção com os resultados.

Exemplo

O exemplo a seguir mostra o uso de org.apache.commons.collections4.CollectionUtils.subtract()método. Obteremos a subtração de duas 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));
   }
}

Resultado

Ao executar o código acima, você verá a seguinte saída -

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

A classe CollectionUtils da biblioteca de coleções do Apache Commons fornece vários métodos utilitários para operações comuns que abrangem uma ampla gama de casos de uso. Isso ajuda a evitar a escrita de código clichê. Essa biblioteca é muito útil antes do jdk 8, pois funcionalidades semelhantes agora são fornecidas na API de fluxo do Java 8.

União verificadora

O método union () de CollectionUtils pode ser usado para obter a união de duas coleções.

Declaração

A seguir está a declaração para 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 - A primeira coleção não deve ser nula.

  • b - A segunda coleção não deve ser nula.

Valor de retorno

A união das duas coleções.

Exemplo

O exemplo a seguir mostra o uso de org.apache.commons.collections4.CollectionUtils.union()método. Conseguiremos a união de duas 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));
   }
}

Resultado

Isso produz a seguinte saída -

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]