如果我需要检索一些对象集合(假设它是一些客户端),请从DB中说。所以有两种可能性:
在某些类接收器中我会声明如下:...
private final List<Client> clients = new ArrayList<Client>();
...
// the fillinng method:
fillClients(){
dbHelper.getClients(clients);
}
因此dbHelper的方法将收到一个即用型集合,它不会创建一个新的对象(列表),但它将清除并填充现有的集合,如:
public void getClients(List<Client>clients){
clients.clear();
...
while(cursor.moveToNext())
clients.add(new Client(...));
...
return;
}
另一种模式是:
...
private List<Client> clients;
...
// the fillinng method:
fillClients(){
clients = dbHelper.getClients();
}
因此相应的方法将创建一个新的对象(列表):
public List<Client> getClients(){
List<Client>clients = new ArrayList<Client> clients;
...
while(cursor.moveToNext())
clients.add(new Client(...));
...
return clients;
}
这个问题与一个事实有关,即新的对象创建是一项有价值的操作。
答案 0 :(得分:0)
实际上我会小心重用相同的ArrayList。因为当我们调用clear()时,Arraylist后面的数组不会重新调整大小。
使用大量元素时,清除非常有用,而不是创建新对象,这样可以避免阵列复制的成本。在其他情况下,只需创建一个新对象。