Zba*_*ian 6 java performance list
我想知道.size()方法的性能.此方法是否从列表中的对象数返回引用(类似于每次将对象添加到列表时递增的类成员)?或者它是否遍历所有对象?
哪一个更有效率?
.size()每次都打电话:
List<Vector3> objects = getCoords();
for (int x = 0; x < objects.size(); x++){
for (int y = 0; y < objects.size(); y++){
for (int z = 0; z < objects.size(); z++){
drawShape(x, y, z);
}
}
}
Run Code Online (Sandbox Code Playgroud)
或者通过保存到本地变量:
List<Vector3> objects = getCoords();
int size = objects.size();
for (int x = 0; x < size; x++){
for (int y = 0; y < size; y++){
for (int z = 0; z < size; z++){
drawShape(x, y, z);
}
}
}
Run Code Online (Sandbox Code Playgroud)
我们假设列表中有> 30.000个对象.
哪一个更快/更有效?
如果我们使用ArrayList<T>或者是否重要List<T>?
简单陈述怎么样:.size()或.isEmpty()
if (objects != null && objects.size() > 0){
doThis();
}
Run Code Online (Sandbox Code Playgroud)
或者通过电话 .isEmpty()
if (objects != null && !objects.isEmpty()){
doSomethingElse();
}
Run Code Online (Sandbox Code Playgroud)
JavaList使用实例变量来处理大小。当你增加时它会增加,当你减少时它会减少。调用list.size()返回一个变量,因此时间复杂度为 O(1)。
List.size()(理论上)看起来像:
public int size() {
return this.size;
}
Run Code Online (Sandbox Code Playgroud)
调用List.isEmpty()是对实例变量是否size等于 0 进行布尔检查。
public boolean isEmpty() {
return (this.size==0);
}
Run Code Online (Sandbox Code Playgroud)
由于这是一个实例变量,因此(据我所知)您使用什么类型并不重要List,因为它们都继承了通用接口并具有所需的add()功能和其他功能。
| 归档时间: |
|
| 查看次数: |
3023 次 |
| 最近记录: |