我的问题是关于遍历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();
}
}
答案 0 :(得分:3)
构造对象(Cliente
)不是免费的,而且会涉及开销,因此POJO可能会更慢。
但是,差异可能并不明显。在所有性能情况下,您都应该先编写最有意义的代码,然后在遇到瓶颈的情况下考虑对其进行改进。而且在所有情况下,您都必须进行基准测试,以确保您对其进行了改进,并且所取得的成就是值得的。
此外,使用POJO更有可能减少错误的数量,并使以后的工作更加轻松。考虑以下问题-页面的哪一个跳错了?
something.acceptAge(cli[1])
something.acceptAge(cliente.getLastName())