Hace poco me hablaron de esta librería de utilidades de Google, y en este post hablaremos básicamente de las características que a priori me han parecido más interesantes.
Empecemos por la funcionalidad a través de la cual llege a Guava: Functions. Esta clase nos permitirá encapsular la lógica de transformación de un objeto a otro.
Function convertidorPrecioConInva = new Function() { @Override public Double apply(Producto producto) { return producto.getPrecio() * 1.21; } } Collection preciosConIva = Collections2.transform(productos, convertidorPrecioConInva);
Predicates: Nos permite generar filtros lógicos a aplicar a una colección de objetos para de esta forma obtener únicamente los que pasen dicho filtro
PredicateesPar = new Predicate () { @Override public boolean apply(Integer number) { return (number % 2) == 0; } }; List numeros = Arrays.asList(1,2,3,4,5,6,7,8,9,10); Iterable numerosPares = Iterables.filter(numeros, esPar);
Inicializador de colecciones (Factory Methods): Guava contiene un conjunto de clases de colecciones que nos permite crear colecciones genéricas sin tener que especificar los objetos de las que están compuestas
Listfrutas = Lists.newArrayList("fresa", "melon","sandia"); final Map > miMapa = Maps.newHashMap();
Multimaps: Es un mapa que te permite obtener más de un objeto asociado a la misma clave, como si a la clave estuviese asociado una colección de objetos.
MultimapmultiMap = ArrayListMultimap.create(); multiMap.put("coches", "mercedes"); multiMap.put("coches", "citroen"); multiMap.put("coches", "volvo"); LOGGER.debug(multimap.size()); //3 Collection coches = multimap.get("coches"); System.out.println(fruits); // [Bannana, Apple, Pear] // Borrar un unico valor multimap.remove("coches","mercedes"); LOGGER.debug(myMultimap.get("coches")); // [citroen, volvo] // Borrar todos los valores myMultimap.removeAll("coches");
Bimaps: Es un mapa que funciona en doble sentido, puedes obtener un valor en función de una clave y una clave en función de un valor.
BiMapvehiculosYRuedas = HashBiMap.create(); vehiculosYRuedas.put('coche','cuatro'); vehiculosYRuedas.put('moto','dos'); LOGGER.debug(vehiculosYRuedas.get('coche')); // cuatro BiMap ruedasYVehiculos = vehiculosYRuedas.inverse(); LOGGER.debug(ruedasYVehiculos.get('dos')); // moto
HashCode y comparators: Contiene utilidades que facilitan la tarea de realizar un hashcode y comparadores.
public int hashCode() { return Objects.hashCode(atributoClase1, atributoClase2); } public int compareTo(final Object o) { return ComparisonChain.start().compare(atributoClase1, o.atributoClase1).compare(atributoClase2, o.atributoClase2 }
No hay comentarios:
Publicar un comentario