Aprende Java Aprende Php Aprende C++ Aprende HTML 5 Aprende JavaScript Aprende JSON Aprende MySQL Aprende SQLServer Aprende Visual Basic 6 Aprende PostgreSQL Aprende SQLite Aprende Redis Aprende Kotlin Aprende XML Aprende Linux VSC Aprende Wordpress Aprende Laravel Aprende VueJS Aprende JQuery Aprende Bootstrap Aprende Netbeans Aprende Android
Sigueme en Facebook Sigueme en Twitter Sigueme en Instagram Sigueme en Youtube Sigueme en TikTok Sigueme en Whatsapp
Home / Java / Manipular colecciones de una forma sencilla

Manipular colecciones de una forma sencilla

Por jc mouse martes, abril 9, 2019

Java proporciona Collection Framework, que define varias clases e interfaces para representar un grupo de objetos como una sola unidad.

Logo Collections

Las colecciones en java nos permiten almacenar objetos y también manipular estos objetos, sin embargo para realizar esto hay hay que escribir código y adaptarla para cada situación que se nos presente. Purify4J es una librería que nos facilita ese trabajo, Purify4J nos permite filtrar, ordenar y asignar colecciones en java con muy poco código.

¿Como lo añado a mi proyecto?

Lo primero que debes elegir es como quieres usar a librería Purify4J, puedes usarlo desde Maven:

<dependency>
   <groupId>com.github.geekonjava</groupId>
   <artifactId>Purify4J</artifactId>
   <version>1.0.1</version>
</dependency>

Gradle: compile ‘com.github.geekonjava:Purify4J:1.0.1’

Descargarte el *.JAR desde <<AQUI>> 19kb

o puedes visitar el proyecto de Purify4J en GitHub

¿Como se usa?

Ahora que ya tenemos agregado Purify4j a nuestro proyecto, para poder usarlo debemos agregar «import static com.github.geekonjava.Refination.*;» a nuestras clases y ya.

Necesitamos también una colección y llenarlo con un objeto, nuestro objeto sera el siguiente:

public class Cliente {
    
    private String dni;
    private String nombre;
    private String sexo;
    private int edad;

    public Cliente(String dni, String nombre, String sexo, int edad) {
        this.dni = dni;
        this.nombre = nombre;
        this.sexo = sexo;
        this.edad = edad;
    }

    public String getDni() {
        return dni;
    }

    public void setDni(String dni) {
        this.dni = dni;
    }

    public String getNombre() {
        return nombre;
    }

    public void setNombre(String nombre) {
        this.nombre = nombre;
    }

    public String getSexo() {
        return sexo;
    }

    public void setSexo(String sexo) {
        this.sexo = sexo;
    }

    public int getEdad() {
        return edad;
    }

    public void setEdad(int edad) {
        this.edad = edad;
    }

    @Override
    public String toString() {
        return "Cliente{" + "dni=" + dni + ", nombre=" + nombre + ", sexo=" + sexo + ", edad=" + edad + '}';
    }
    
}

y llenamos nuestra List «clientes» de la siguiente forma:

        List<Cliente> clientes = new ArrayList<>();
        clientes.add(new Cliente("123","Zacarias Flores del Campo","M",21));
        clientes.add(new Cliente("321","Armando Mocha","M",18));
        clientes.add(new Cliente("132","Sevelinda Parada","F",27));
        clientes.add(new Cliente("231","Elsa Capunta","F",16));
        clientes.add(new Cliente("131","Jorge Nitales","M",69));
        clientes.add(new Cliente("332","Yola Prieto","F",21));
        clientes.add(new Cliente("313","Rosamel Forrito","M",31));
        clientes.add(new Cliente("113","Esteban Dido","M",25));   

Ahora, si quisiéramos filtrar a todos los clientes de sexo masculino, haríamos esto:

from(clientes).where("sexo", eq("M")).all();

Y si solo quisiéramos una lista con los clientes d sexo femenino «F» mayores de edad haríamos esto:

from(clientes).where("sexo", eq("F")).and("edad", greaterThan(17)).all();

Y si solo quisiéramos ordenar nuestra lista de clientes de mayor a menor, podemos hacer eso:

from(clientes).orderBy("edad", Order.DESC).all();

A continuación el código completo:

import java.util.ArrayList;
import java.util.List;
import static com.github.geekonjava.Refination.*; 
import com.github.geekonjava.query.order.Order;
/**
 * @see https://www.jc-mouse.net
 * @author mouse
 */
public class Main {
    
    public static void main(String[] args) {
        
        List<Cliente> clientes = new ArrayList<>();
        clientes.add(new Cliente("123","Zacarias Flores del Campo","M",21));
        clientes.add(new Cliente("321","Armando Mocha","M",18));
        clientes.add(new Cliente("132","Sevelinda Parada","F",27));
        clientes.add(new Cliente("231","Elsa Capunta","F",16));
        clientes.add(new Cliente("131","Jorge Nitales","M",69));
        clientes.add(new Cliente("332","Yola Prieto","F",21));
        clientes.add(new Cliente("313","Rosamel Forrito","M",31));
        clientes.add(new Cliente("113","Esteban Dido","M",25));
        
        //Clientes de sexo masculino
        List <Cliente> mList = from(clientes).where("sexo", eq("M")).all();
        imprimirLista("Clientes de sexo masculino",mList);
        
        //Clientes mujeres mayores de edad (>=18)
        List <Cliente> fList = from(clientes).where("sexo", eq("F")).and("edad", greaterThan(17)).all();
        imprimirLista("Clientes mujeres mayores de edad",fList);
                 
        //Todos los clientes ordenados por edad de mayor a menor
        List <Cliente> ordenList = from(clientes).orderBy("edad", Order.DESC).all();
        imprimirLista("Todos los clientes ordenados por edad de mayor a menor",ordenList);
    }
    
    public static void imprimirLista(String titulo, List<Cliente> lista){
        System.out.println("\n   " + titulo.toUpperCase());
        lista.forEach((cliente) -> {
            System.out.println(cliente);
        });        
    }
}

y obtenemos:

output filter list

Espero que esta librería te sirva y si quieres saber más visita el repositorio de Purify4J

enjoy!!!

Tags

Artículos similares

Mapas interactivos – El proyecto – Parte 2

Comenzando este tutorial, primero necesitamos definir la «estructura» de nuestro proyecto. Haremos uso del IDE de Dreamw[...]

Duplicación de objetos con la Interface Cloneable

En este post aprenderemos lo que es la clonación de objetos en java o lo que es lo mismo, generación de nuevas instancia[...]

Utiliza 2 bases de datos diferentes en una aplicación parte I

Cuando se desarrolla una aplicación, puede ser un requisito que este tenga soporte para varias tipos de base de datos, s[...]

Biblioteca java para leer/escribir Metadatos

En posts anteriores hablamos sobre los metadatos y el porque son importantes en la Seguridad Informática, vimos el manej[...]

Minimizar aplicación al SystemTray/Bandeja del Sistema

El SystemTray/Bandeja del Sistema o como también se le llama «Área de Notificación» es la sección de la barra de tareas[...]

Generador de códigos QR (Quick Response)

En este tutorial aprenderemos a crear nuestra propia aplicación java para generar códigos QR. ¿Que es un Código QR? «Un[...]