Google Guava - Tensho97/Aprende-a-Aprender GitHub Wiki
Google Guava es un conjunto de librerías comunes de código abierto para Java, desarrollado principalmente por por ingenieros de Google.
Google Guava puede ser dividido en tres componentes: utilidades básicas para reducir labores menores para implementar métodos y comportamientos comunes, una extensión a Java collections framework (JCF) anteriormente llamada Google Collections Library, y otras utilidades que proporcionan características convenientes y productivas tales como programación funcional, almacenamiento en caché, objetos de rango y hashing.
Uno de los mayores beneficios de esta librería son los nuevos tipos de colecciones que implementa:
En java existe el concepto Set que es un conjunto de elementos no repetidos, incluso solo se puede tener un objeto null, de manera que no sea posible e1.equals(e2).
MultiSet permite que sea independiente de la igualdad del orden, como Set, pero en este caso se pueden tener duplicados.
Un ejemplo sencillo de utilización de MultiSet:
final Multiset<String> conjuntoCadenas = HashMultiset.create();
conjuntoCadenas.add("hola");
conjuntoCadenas.add("hola");
conjuntoCadenas.add("hola");
conjuntoCadenas.add("que");
conjuntoCadenas.add("que");
conjuntoCadenas.add("tal");
System.out.println("Total:" + conjuntoCadenas.size());
System.out.println("Total holas:" + conjuntoCadenas.count("hola"));
System.out.println("Total que:" + conjuntoCadenas.count("que"));
System.out.println("Total tal:" + conjuntoCadenas.count("tal"));
final Set<String> nuevo = conjuntoCadenas.elementSet();
System.out.println("Nuevo Conjunto :" + nuevo.size());
for (String elemento : nuevo) {
System.out.println(elemento);
}
La representación por pantalla sería la siguiente:
Se puede observar que el MultiSet hay las 6 entradas que insertaron mientras que al convertirlo a Set aquellas entradas que estaban duplicadas sólo se guardaron la primera vez.
MultiSet está entre las Listas y los Sets y su definición se parece mucho al concepto abstracto de bolsa ya que no hay un orden definido, se admiten elementos repetidos y se necesita saber cuantos elementos tenemos de cada items para poder operar con ellas.
Es el mismo concepto que se tiene de Map pero permite tener claves repetidas. En este aspecto se parece bastante al MultiSet.
En el caso que podrá ver en el código (abajo) se utiliza la llave repetido básico para almacenar 2 tipos de valores:
final Multimap<String, String> mapa = HashMultimap.create();
mapa.put("basico", "POO");
mapa.put("basico", "JDBC");
mapa.put("avanzado", "EJB");
final Collection<String> cursosBasicos = mapa.get("basico");
System.out.println(cursosBasicos.size()); // size = 3
System.out.println(cursosBasicos.contains("POO"));
System.out.println(mapa.get("avanzado").size());
Importante: el size() es 3 y no 2 y los valores son representados como [POO, JDBC y EJB] y no como [[POO, JDBC], EJB]
Autor : Kevin