当我在开发某些东西时,我想知道在迭代某些东西时创建一堆对象可能是更好/更快的方法。
假设我们有这个包装类:
public class Photo{
private String url;
private String creator;
public Photo(String url, String creator){
this.url = url;
this.creator = creator;
}
// Getter methods down here...
}
我们有一张JSONArray
照片,我们只想要url
- 和 -creator
字符串:
JSONArray photos = json.getJSONArray("photos");
Photo[] photo_arr = new Photo[photos.length()];
// Iterate:
for (int i = 0; i < photos.length(); i++){
// Create the objects here.
}
现在,我看到了三种可能的解决方案:
创建临时变量
创建一些临时变量,这些变量从当前对象中获取所需的值,然后构造新的对象Photo
:
// Iterate:
String url = "";
String creator = "";
for (int i = 0; i < photos.length(); i++){
url = photos[i].getString("url");
creator = photos[i].getString("creator");
photo_arr[i] = new Photo(url, creator);
}
直接在构造函数中使用返回值
不要创建临时变量,而是getString()
在构造函数调用中使用 - 方法的返回值:
// Iterate:
for (int i = 0; i < photos.length(); i++){
photo_arr[i] = new Photo(
photos[i].getString("url"),
photos[i].getString("creator")
);
}
使用 setter 方法
为包装类添加一个无参数的构造函数和设置方法,url
并creator
使用它们来填充对象:
// Iterate:
for (int i = 0; i < photos.length(); i++){
photo_arr[i] = new Photo();
photo_arr[i].setUrl( photos[i].getString("url") );
photo_arr[i].setCreator( photos[i].getString("creator") );
}
哪一种是更好/更快/更清洁的方法?