Google Guava
Google Guava es un proyecto de Google que reúne un conjunto de librerías usadas internamente dentro de Google para sus proyectos que emplean Java. El propósito de la librería es simplificar el código empleado para realizar tareas que son comunes dentro de Java y que no están soportadas por las librerías estándar, de esta manera busca eliminar código propenso a errores.
Contenido
Maven
<dependency>
<groupId>com.google.guava</groupId> <artifactId>guava</artifactId> <version>r09</version>
</dependency>
Controlara última versión aquí.
Ejemplos
CharMatcher
Determina verdadero o falso para cualquier carácter java, también ofrece métodos básicos de tratamiento de texto.
And / Or
String input = "La fecha es : 01/01/2011";
CharMatcher charMatcher = CharMatcher.DIGIT.or(CharMatcher.is('/'));
String output = charMatcher.retainFrom(input);
System.out.println(output);
// Salida : 01/01/2011
Negate
String input = "MAYUSCULA minuscula";
CharMatcher charMatcher = CharMatcher.JAVA_LOWER_CASE.or(CharMatcher.WHITESPACE).negate();
String output = charMatcher.retainFrom(input);
System.out.println(output);
// Salida: MAYUSCULA
inRange
String input = "Solo quedan los numeros 1, 2, 3, 4 que son menores a 5 ";
CharMatcher charMatcher = CharMatcher.inRange('0', '4').or(CharMatcher.WHITESPACE);
String output = charMatcher.retainFrom(input);
System.out.println(output);
// Salida: 1 2 3 4
Joiner
Une fragmentos de texto mediante un separador. también ofrece métodos básicos de tratamiento de texto.
join
String[] nombres = {"Josefina", "Nacho", "Lali", "Coco"};
String output = Joiner.on(", ").join(nombres);
System.out.println(output);
// Salida: Josefina, Nacho, Lali, Coco
skipNulls
String[] nombres = {null, "Josefina", null, "Nacho", null, "Lali", null, "Coco"};
String output = Joiner.on(", ").skipNulls().join(nombres);
System.out.println(output);
// Salida: Josefina, Nacho, Lali, Coco
useForNull
String[] nombres = {null, "Josefina", null, "Nacho", null, "Lali", null, "Coco"};
String output = Joiner.on(", ").useForNull("n/a").join(nombres);
System.out.println(output);
// Salida: n/a, Josefina, n/a, Nacho, n/a, Lali, n/a, Coco
withKeyValueSeparator
Map<Integer, String> map = newHashMap();
map.put(1, "Josefina");
map.put(2, "Nacho");
map.put(3, "Lali");
String output = Joiner.on(", ").withKeyValueSeparator(" -> ").join(map);
System.out.println(output);
// Salida: 1 -> Josefina, 2 -> Nacho, 3 -> Lali
Splitter
Divide cadenas de texto en subcadenas mediante el reconocimiento de un separador (también conocido como delimitador), este se puede definir mediante un carácter, una cadena literal, una expresión regular, un CharMatcher, o mediante el uso de una longitud fija.
Split
Split retorna una instancia de Iterable en lugar de un Array.
String input = "Josefina|Nacho|Lali";
Iterable<String> split = Splitter.on("|").split(input);
List<String> output = newArrayList(split);
System.out.println(output);
// Salida: [Josefina, Nacho, Lali]
fixedLength
String input ="Josefina Nacho Lali ";
Iterable<String> splitted = Splitter.fixedLength(10).trimResults().split(input);
List<String> output = newArrayList(splitted);
System.out.println(output);
//Salida: [Josefina, Nacho, Lali]
onPattern
String input ="Josefina Nacho Lali";
Iterable<String> splitted =
Splitter.onPattern("[a-z&&[aeiou]]").omitEmptyStrings().split(input);
List<String> output = newArrayList(splitted); System.out.println(output);
// Salida: [J, s, f, n, N, ch, L, l]
Collection2
Proporciona métodos estáticos para trabajar con colecciones.
filter
List<String> input = newArrayList("Josefina","Nacho","lali");
Collection<String> output =
Collections2.filter(input, new Predicate<String>() {
public boolean apply(String t) { if (t.contains("i")) { return true; } return false; } });
System.out.println(output);
// Salida: [Josefina, lali]
transform
List<String> input = newArrayList("Josefina", "Nacho", "lali");
Collection<String> output =
Collections2.transform(input, new Function<String, String>() {
public String apply(String f) { return f.replaceAll("fina",""); } });
System.out.println(output);
// Salida: [Jose, Nacho, lali]
Multimap
Basicamente es un map en el que se pueden asignar muchos valores a una sola clave.
Multimap<Integer, String> output = HashMultimap.create();
output.put(1, "Josefina"); output.put(2, "nacho"); output.put(3, "Lali"); output.put(1, "Josefina_2");
System.out.println(output);
// Salida: {1=[Josefina, Josefina_2], 2=[Bacho], 3=[lali]}
ImmutableSetMultimap
inline
Multimap<Integer, String> output =
ImmutableSetMultimap.of(1, "Josefina", 2, "Bacho", 3, "lali", 1, "Josefina_2");
System.out.println(output);
// Salida: {1=[Josefina, Josefina_2], 2=[Bacho], 3=[lali]}
builder
Multimap<Integer, String> output =
new ImmutableSetMultimap.Builder<Integer, String>() .put(1, "Josefina") .put(2, "Nacho") .put(3, "lali") .put(1, "Josefina_2") .build();
System.out.println(output);
// Salida: {1=[Josefina, Josefina_2], 2=[Bacho], 3=[lali]}
BiMap
Es un Map que solo permite valores únicos.
@Test(expected = IllegalArgumentException.class) public void biMap_conValoresNoUnicos_lanzaIllegalArgumentException() {
BiMap<Integer, String> output = HashBiMap.create(); output.put(1, "Josefina"); output.put(2, "lali"); output.put(3, "Josefina"); //IllegalArgumentException
}
Tables
Es una colección con columnas filas y valores. Permite el traspaso de una tabla a otra.
Table<Integer, String, String> table = HashBasedTable.create();
table.put(1, "Hija", "Josefina");
table.put(1, "Sobrino", "Nacho");
table.put(1, "Pareja", "Lali");
Table output = Tables.transpose(table);
System.out.println(output);
// Salida: {Hija={1=Josefina}, Sobrino={1=Nacho}, Pareja={1=Lali}}