Marco de colecciones de Java

Commons Collections mejora el Java Collections Framework. Proporciona varias funciones para facilitar el procesamiento de la colección. Proporciona muchas nuevas interfaces, implementaciones y utilidades. Las principales funciones de Commons Collections son las siguientes

  • Bag: la interfaz Bag simplifica las colecciones con múltiples copias de cada objeto.

  • BidiMap: la interfaz de BidiMap proporciona un mapa bidireccional que se puede usar para buscar un valor usando una clave o una clave usando un valor.

  • MapIterator: la interfaz de MapIterator proporciona una iteración iterativa simple y fácil.

  • Decoradores transformadores: los decoradores transformadores pueden cambiar cada objeto de una colección cuando se agrega a la colección.

  • Colecciones compuestas: use colecciones compuestas cuando necesite manejar varias colecciones de manera uniforme.

  • Mapa ordenado: un mapa ordenado conserva el orden en que se agregaron los elementos.

  • Conjunto ordenado: un conjunto ordenado conserva el orden en que se agregaron los elementos.

  • Mapa de referencia: los mapas de referencia permiten que los valores clave se recolecten como elementos no utilizados bajo un control estricto.

  • Implementaciones de Comparator: muchas implementaciones de Comparator están disponibles.

  • Implementaciones de iteradores: muchas implementaciones de iteradores están disponibles.

  • Clases de adaptador: las clases de adaptador se pueden usar para convertir matrices y enumeraciones en colecciones.

  • Utilidades: utilidades disponibles para probar, probar o crear propiedades típicas de conjuntos teóricos, por ejemplo, unión, intersección. El soporte está desactivado.

Colecciones comunes - Bolsa

Bag define una colección para contar el número de veces que aparece un objeto en la colección. Por ejemplo, si Bag contiene {a, a, b, c}, getCount("a") devolverá 2 y uniqueSet() devolverá valores únicos.

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

Imprimirá el siguiente resultado:

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]

Colecciones comunes - BidiMap

Con un mapa bidireccional, la clave se puede buscar usando el valor y el valor se puede buscar fácilmente usando la clave.

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

Imprimirá 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}

Colecciones comunes - MapIterator

La interfaz de JDK Map es difícil de iterar porque la iteración se realiza en objetos EntrySet o KeySet. MapIterator proporciona una iteración simple sobre Maps.

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

Imprimirá el siguiente resultado.

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_}

Colecciones comunes - OrderedMap

OrderedMap es una nueva interfaz para mapas que conserva el orden en que se agregaron los elementos. LinkedMap y ListOrderedMap son dos implementaciones disponibles. Esta interfaz admite iteradores para mapas y permite iterar en ambas direcciones hacia adelante o hacia atrás en el mapa.

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

Imprimirá el siguiente resultado.

One
Two
Three

Colecciones comunes - Ignorar NULL

La clase CollectionUtils de la biblioteca Apache Commons Collections proporciona varios métodos de utilidad para operaciones comunes, cubriendo una amplia gama de casos de uso. Ayuda a evitar escribir código repetitivo. Esta biblioteca fue muy útil antes de jdk 8, ya que la API Stream de Java 8 ahora proporciona una funcionalidad similar.

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

Imprimirá el siguiente resultado.

[a]
Null value is not present

Combinar y ordenar

La clase CollectionUtils de la biblioteca Apache Commons Collections proporciona varios métodos de utilidad para operaciones comunes, cubriendo una amplia gama de casos de uso. Ayuda a evitar escribir código repetitivo. Esta biblioteca fue muy útil antes de jdk 8, ya que la API Stream de Java 8 ahora proporciona una funcionalidad similar.

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

Imprimirá el siguiente resultado.

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

Cheques vacíos seguros

La clase CollectionUtils de la biblioteca Apache Commons Collections proporciona varios métodos de utilidad para operaciones comunes, cubriendo una amplia gama de casos de uso. Ayuda a evitar escribir código repetitivo. Esta biblioteca fue muy útil antes de jdk 8, ya que la API Stream de Java 8 ahora proporciona una funcionalidad similar.

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

Imprimirá el siguiente resultado.

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

Colecciones comunes - Inclusión

comprueba si una lista es parte de otra lista

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

Imprimirá 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

Colecciones comunes - Intersección

Se utiliza para obtener objetos comunes entre dos colecciones (intersección)

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

Imprimirá 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]

Colecciones comunes - Resta

Obtiene una nueva colección restando objetos de una colección de otras colecciones

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

Imprimirá el siguiente resultado.

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

Colecciones comunes - Unión

Sirve para conseguir la unión de dos colecciones.

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

Imprimirá el siguiente resultado.

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]

Supongo que te gusta

Origin blog.csdn.net/zy_dreamer/article/details/132307419
Recomendado
Clasificación