問題是,「我們可能期望method3運行得比method2快,爲什麼會這樣?」但我不知道。看起來這兩種方法都可以執行相同的操作。有人請賜教嗎?for循環性能迭代
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;
}
在現實世界中,99.99%的時間,這兩種方法之間唯一有意義的區別是可讀性。 2之間的性能差異取決於列表的大小,以及ArrayList如何實現get和getItorator方法,並且幾乎不會影響;任何基於類實現的設計選擇總是本質上是錯誤的(除非你需要擠出每一分性能,在這種情況下,你很可能會在較低的水平上編碼) – Tezra