.toArray(yeni Sınıfım[0]).toArray(Sınıfım yeni[myList.() size])?
Ben varsayarak bir ArrayList
ArrayList<MyClass> myList;
Ve toArray aramak istiyorum, orada kullanmak için bir performans nedeni budur
MyClass[] arr = myList.toArray(new MyClass[myList.size()]);
üzerinde
MyClass[] arr = myList.toArray(new MyClass[0]);
?
Daha az ayrıntılı ve derleyici boş dizi gerçekten oluşturulan almaz emin olun kabul beri ikinci tarzı tercih ederim, ama eğer bu doğruysa merak ediyorum.
Tabii ki, �'u bu durumda hiçbir şey farketmez öyle ya da böyle, ama isterim tutmak tutarlı bir stil arasında benim normal kod ve benim optimize edilmiş iç döngüler...
CEVAP
ArrayList in Java 5, dizi gibi zaten eğer doğru boyutu (veya daha büyük) varsa doldurulacaktır. Sonuç olarak
MyClass[] arr = myList.toArray(new MyClass[myList.size()]);
bir dizi nesnesi oluşturmak, doldurup geri dönecektir "" arr Diğer taraftan
MyClass[] arr = myList.toArray(new MyClass[0]);
iki dizi oluşturur. İkincisi uzunluğu 0 ile Sınıfım dizisidir. Hemen atılır bir nesne için bir nesne oluşturma var. Kaynak kodu da anlaşılacağı kadarıyla TAM zamanında olamaz / derleyici yaratılmış değildir, bu bir optimize. Ayrıca, döküm-uzunluğu sıfır nesne sonuçları(ler) kullanarak toArray() - yöntem.
ArrayList kaynak bakın.() toArray:
public <T> T[] toArray(T[] a) {
if (a.length < size)
// Make a new array of a's runtime type, but my contents:
return (T[]) Arrays.copyOf(elementData, size, a.getClass());
System.arraycopy(elementData, 0, a, 0, size);
if (a.length > size)
a[size] = null;
return a;
}
Yalnızca bir nesne oluşturulur, ilk yöntem () ama yine de örtülü pahalı döküm kaçının.
SERİ: bir nesne Seçin ve yeni bir nesn...
Satır başı ve yeni satır c bir dize so...
Nasıl Eclipse, Oracle kullanarak Çalış...
"Bilinmeyen class <Sınıfım>...
Yeni bir dize oluşturmadan Ruby bir di...