性能循环arrayList与POJO(JAVA)

时间:2018-12-05 09:51:23

标签: java performance arraylist pojo

我的问题是关于遍历ArrayList与POJO时的性能,也就是说,如果我从数据库中获取数据并将其加载到ArrayList然后再加载到POJO:

遍历ArrayList(位置[0],[1],...)或POJO(pojo.nombre,pojo.lastname,..)是否更有效(在处理级别)?

循环ArrayList的示例:

private List<Object[]> _listaClientes = new ArrayList<Object[]>();//create arrayList
public void cargaClientes(){
    try{
        _listaClientes = new ArrayList<>();
        //take data from DB:
        _listaClientes = ctrClientes.getData();

        //Loop arrayList:
        for(Object[] obj : _listaClientes){
            System.out.println(obj[0]);//id
            System.out.println(obj[1]);//name
            //...
        }
    }catch(Exception e){
        e.printStackTrace();
    }
}

循环POJO的示例:

private List<Cliente> listaClientes;
public void cargaClientes(){
    try{
        //take data from DB:
        listaClientes = ctrClientes.getDataPojo();

        //looping POJO
        Iterator<Cliente> itrCli = listaClientes.iterator();
        while(itrCli.hasNext()){
            Cliente cli = itrCli.next();
            System.out.println(cli.cedula);//id
            System.out.println(cli.nombre);//name
            //...
        }
    }catch(Exception e){
        e.printStackTrace();
    }
}

1 个答案:

答案 0 :(得分:3)

构造对象(Cliente)不是免费的,而且会涉及开销,因此POJO可能会更慢。

但是,差异可能并不明显。在所有性能情况下,您都应该先编写最有意义的代码,然后在遇到瓶颈的情况下考虑对其进行改进。而且在所有情况下,您都必须进行基准测试,以确保您对其进行了改进,并且所取得的成就是值得的。

此外,使用POJO更有可能减少错误的数量,并使以后的工作更加轻松。考虑以下问题-页面的哪一个跳错了?

something.acceptAge(cli[1])

something.acceptAge(cliente.getLastName())