for循环性能迭代

err*_*err 3 java performance for-loop arraylist

问题是,"我们可能期望method3比method2运行得更快,为什么会这样?" 但我不知道.似乎两种方法都执行相同数量的操作.有人可以赐教吗?

ArrayList<Person> method2(Person x, ArrayList<Person> people){
    ArrayList<Person> friends = new ArrayList<Person>();
    for (Person y : people) if (x.knows(y)) friends.add(y);
    return friends;  
}


ArrayList<Person> method3(Person x, ArrayList<Person> people){  
    ArrayList<Person> friends = new ArrayList<Person>();  
    for (int=0; i<people.size(); i++){ 
        Person y = people.get(i);
        if (x.knows(y)) friends.add(y);
    }
    return friends;
}
Run Code Online (Sandbox Code Playgroud)

Mik*_*kis 5

不是这样.两种方法都将以几乎相同的速度运行.

如果它们不会以完全相同的速度运行,则有两件事情:

  1. 在任何实际情况下,它都不会产生任何影响.

  2. 你真的不能告诉它是否将是method2method3将运行得更快.