Ola, tudo bem?
Eu sou Anderson Felix, e a alguns meses eu venho criando uma ferramenta(em meu tempo livre) para resolver o problema de filtrar lista em java de maneira facil e rapida. Para isso foi criado um projeto que pega como parametro as listas que vão ser filtradas, com o auxilio de uma interface (FilterObject/FilterCampo), os tipos de união que avera entre essas listas(atraves da class Join) e os criterios que vai ser usado para filtrar( CriteriaBoolean/CriteriaComparator) e isso tudo é organizado e processado na class ListCriteria. Com isso consegui bons resultados depois de muito trabalho, como outras pessoas disponibilizaram soluções excelentes e que me ajudou muito a resolver problemas que eu tive, decidi disponibilizar esse projetinho para que outras pessoas usem e também para que o projeto creça. Ele se encontra em um diretorio publico do github com o nome de ListCriteria.
public static void main(String[] args) {
List<testModelo> listTest = new ArrayList();
for (int i = 0; i < 10; i++) {
testModelo pojo = new testModelo();
pojo.setCpf("[telefone removido]");
pojo.setHelloWorhd("ola mundo" + i);
pojo.setNome("Anderson" + i);
pojo.setIdadeMenino(9 + i);
pojo.setFornecedor(new testFornecedor("rita" + i, "Cassia", null, false));
pojo.setDataNacimento(new Date());
listTest.add(pojo);
}
List<Object[]> lc = ListCriteria.begin(listTest, "this")
.add(Restricions.not(Restricions.equals("this.nome","Anderson1")))
.add(Restricions.maiorQue("this.idadeMenino",10))
.setProjection(Projections.cria()
.addProjectio(Projections.propertName("this.nome"))
.addProjectio(Projections.propertName("this.cpf"))
.addProjectio(Projections.propertName("this.idadeMenino"))
.addProjectio(Projections.propertName("this.fornecedor.nome"))
)
.list();
//
for (Object[] lc1 : lc) {
System.out.println(Arrays.toString(lc1));
}
}
Espero com esse poste ajudar a muitas pessoas que sofrem tendo que criar estruturas com for, while e if para filtrar listas.
Quem quiser saber mais ou contribuir com esse projeto me procure pelo:
Facebook
WattsApp-([telefone removido].
Obrigado pela atenção e não deixem de usar essa tecnologia.