好的,例如,我有一个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)要求从列表的开头(或从结尾)迭代到所请求的索引。

如果这是一个随机访问列表,则两个选项的运行时间都将相似,但第一个选项看起来更简洁。

07-26 00:49