好的,例如,我有一个Arena类,并将它们添加到列表中,我需要通过一个参数来获取Arena。遍历每个对象或从列表中获取它们更有效?哪种方法更有效?
public Arena getArena(String param) {
List<Arena> arenas = ...;
for(Arena arena : arenas) {
if(arena.getParameter().equals(param)) return arena;
}
}
要么
public Arena getArena(String param) {
List<Arena> arenas = ...;
for(int i = 0; i < arenas.size(); i++) {
if(arenas.get(i).getParameter().equals(param)) return arenas.get(i);
}
}
最佳答案
这取决于您使用的List实现是否具有随机访问权限(例如ArrayList)是否具有(例如LinkedList)。
如果没有随机访问权限,则第二个选项的效率会降低,因为arenas.get(i)要求从列表的开头(或从结尾)迭代到所请求的索引。
如果这是一个随机访问列表,则两个选项的运行时间都将相似,但第一个选项看起来更简洁。