【问题标题】:Performance looping arrayList vs POJO (JAVA)性能循环 arrayList 与 POJO (JAVA)
【发布时间】:2018-12-05 09:51:22
【问题描述】:

我的问题是关于遍历 ArrayList vs 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();
    }
}

【问题讨论】:

  • 但是您需要使用Object 的集合,其中 POJO 返回正确的类型值

标签: java performance arraylist pojo


【解决方案1】:

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

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

此外,使用 POJO 更有可能减少错误的数量并使其在未来更易于使用。考虑以下问题 - 页面的哪一个跳转是错误的?

something.acceptAge(cli[1])

something.acceptAge(cliente.getLastName())

【讨论】:

  • 谢谢@Jackg,它对我帮助很大。
猜你喜欢
  • 2016-04-25
  • 2010-11-13
  • 2016-04-06
  • 2019-10-14
  • 2020-04-17
  • 1970-01-01
  • 2015-08-29
  • 2019-07-26
相关资源
最近更新 更多