2016-04-10 12 views
-1

ArrayList sınıfının sadece Object [] ve standart işlevler kullanılarak sıfırdan uygulanmasını sağlıyorum. Nesne [] dizisinin boyutu olan bir int döndüren "size" yöntemi yapmaya çalışıyorum.Java'da Nesne (Object []) dizisinin kapsam dışı olduğu bir dizin için nasıl test edilir?

public class MyArraryList{ 
Object[] Objects = new Object[0]; 

public int sizeOf(Object[] o) 
{ 
    int i = 1; 
    while(i > 0) 
    { 
     if() 
    } 
} 

Şimdiye dek sahip olduğum şey budur. If deyiminde, aslında "dizinin aralık dışı dizin" satırlarında bir hata olup olmadığını kontrol etmek istiyorum. Bunun sözdiziminin ne olduğundan emin değilim. Birisi bunu nasıl yapacağınızı açıklayabilir mi lütfen? Teşekkürler!

+0

@Jared Diğer soru, bir "int" basamak sayısını bulmak için nasıldı. –

cevap

1

Dizinin uzunluğu daima listenin büyüklüğüne eşittir nerede ArrayList bir sürümünü yazmak mümkün olacağını

objects.length 

kullanarak bir dizinin uzunluğunu bulabilirsiniz. Bu durumda boyut yöntemi sadece

public int size() { 
    return objects.length; 
} 

Böyle bir liste çok yavaş olacağını olurdu. Diziler sabit uzunlukta olduğundan, çalışmak için her ekleme veya çıkarma işleminde yeni bir dizi oluşturmanız gerekir.

ArrayList böyle çalışmıyor. Bir ArrayList, 2 alana sahiptir; Object[] ve size adı verilen int. Buradaki nokta, dizinin uzunluğunun genellikle listenin boyutundan daha yüksek olmasıdır, çünkü dizinin sonunda kullanılmayan yuvalar vardır. Eğer bu şekilde yaparsanız size yöntem yapabileceğiniz en yararlı şey nasıl çalıştığını görmek için ArrayList kaynak kodunu okunur

public int size() { 
    return size; 
} 

sadece

olduğunu.

int length = 0; 
try { 
    while (true) { 
     Object o = objects[length]; 
     length++; 
    } 
} catch (ArrayIndexOutOfBoundsException e) { 
    // ignore 
} 
:

Ben esasen

"dizisinin aralık dışında endeksi" çizgisinde bir hata varsa Sen böyle bir dizinin uzunluğunu bulabilirsiniz kontrol etmek istiyorum

Bununla birlikte, istisnaları böyle kullanmamalısınız. Gerçekten istisnai durumlar için ayrılmalıdırlar.

İlgili konular