小编oit*_*thi的帖子

如何使用java 8流过滤具有两个列表的对象?

我需要过滤包含大量对象的列表。对于每个对象,我需要验证是否有任何参数包含其他列表中的单词之一。我已经开发了一种方法来做到这一点,但是花费的时间太长,我想知道是否有更有效的方法来做到这一点。

为了更好地理解,主要思想可以用sql编写:

SELECT * FROM PROJECT P WHERE P.NAME LIKE "%JAVA%" OR P.NAME LIKE "%PASCAL%" OR P.PRODUCT LIKE "%JAVA%" OR P.PRODUCT LIKE "%PASCAL% OR. P.ADDRESS LIKE "%JAVA" OR P.ADDRESS LIKE "%PASCAL%";
Run Code Online (Sandbox Code Playgroud)

在Java中我是这样写的:

private List<Projeto> filtraResultado(List<Projeto> projetosAssinados, String[] filtros){
List<Projeto> result = new ArrayList<Projeto>();
for(Projeto p: projetosAssinados) {
    if(existeFiltroBuscadoNosCamposDePesquisa(p.getDsProjeto(), filtros) ||
       existeFiltroBuscadoNosCamposDePesquisa(p.getNomeProjeto(), filtros) ||
       existeFiltroBuscadoNosCamposDePesquisa(p.getSetor(),filtros) ||
       existeFiltroBuscadoNosCamposDePesquisa(p.getUn(), filtros) ||
       existeFiltroBuscadoNosCamposDePesquisa(p.getProcessosModelados(),filtros)||
       existeFiltroBuscadoNosCamposDePesquisa(p.getServicosPrestados(),filtros) ||
       existeFiltroBuscadoNosCamposDePesquisa(p.getTecnologias(),filtros)||
       existeFiltroBuscadoNosCamposDePesquisa(p.getDetalhamento(),filtros)) {
            result.add(p);
    }

}
return result;
Run Code Online (Sandbox Code Playgroud)

}

public boolean existeFiltroBuscadoNosCamposDePesquisa(String campoPesquisado,String[] filtros ){
if(campoPesquisado == null) { …
Run Code Online (Sandbox Code Playgroud)

java java-8

4
推荐指数
1
解决办法
2310
查看次数

标签 统计

java ×1

java-8 ×1