Büyük olasılıkla aşırı verimli olmaya çalışıyorum, ancak aşağıdaki iki kod örneğinden hangisinin daha hızlı çalışacağını merak ediyorum.Döngü için kısa yol tekrar edilebilir referansın önbelleğini mu?
Bir ArrayList
Strings
içeren bir nesneye başvurunuz olduğunu ve bu listede yinelemek istediğinizi varsayalım. Aşağıdakilerden hangisi daha verimli (sadece marjinal olsa bile)? Gördüğünüz gibi ilk örnek yapar göründüğü gibi
for(String s : foo.getStringList())
System.out.println(s);
Ya
ArrayList<String> stringArray = foo.getStringList();
for(String s : stringArray)
System.out.println(s);
, ikinci döngü yerine bunun için her yinelemesini çağıran listesine bir başvuru başlatır. Bu kavram tamamen yanlış olmadıkça ve her ikisi de aynı şekilde işlerler, çünkü Java'nın iç çalışması kendi referans değişkenini yaratır.
Benim sorum şu ki, hangisi?
CS kurslarına geri dönmeyi düşünüyorum. Bence eşdeğer olurlar. Programı bir hata ayıklayıcıda çalıştırarak bunu gözlemlemeniz gerekir. Değişken listesinde 'foo.getStringList()' – Freiheit
'dan döndürülen nesneye bir çeşit başvuru olması gerekir. İkinci koddaki stringArray'ın kapsamı geniş olduğundan her zaman ilk seçenekle birlikte giderim. Kapsamı olabildiğince dar tutmayı tercih ediyorum. – Jimmy
@Jimmy, ancak aynı değişken adını tekrar kullanmayacaksanız ve diğer sınıf listede anwyays tutmaya devam ederseniz, kapsam sorunu mu? – StrongJoshua