1. ArrayList
sınıf
Bugün sınıfı inceleyeceğiz ArrayList
. Bu, koleksiyonlar olarak bilinen birkaç sınıfın ilkidir . Java'da koleksiyonlar o kadar geniş ve kullanışlı bir konudur ki, CodeGym görevinin tamamı bunlara ayrılmıştır.
Koleksiyonların nasıl yapılandırıldığını ve tüm nüanslarını tam olarak anlamak için önce OOP'yi, arabirimleri, kalıtımı, çoklu okumanın temellerini ve çok daha fazlasını öğrenmeniz gerekir.
Bu yüzden bugün en basit koleksiyon türüyle tanışacağız. Ama nasıl kullanılacağını ve nasıl çalıştığını anlamanız için yeterince derin bir seviyede. Şimdi koleksiyonla ArrayList
tanışın .
arka plan
Biraz arka planla başlayacağım. Programcılar dizilerin bir yönünü gerçekten sevmediler: boyutlarının değiştirilememesi. Bir dizide üç öğe daha depolamanız gerekirse, ancak yalnızca bir boş hücre varsa ne olur?
Bir dizinin alan sınırlamalarına tek çözüm, saklamanız gerekebilecek tüm öğeleri barındırmak için çok büyük bir dizi oluşturmaktı. Ancak bu genellikle bir hafıza kaybıydı. Bir dizi genellikle iki veya üç öğe içeriyorsa, ancak 100 tanesini saklaması gerekecek gibi küçük bir ihtimal bile varsa, o zaman 100 tanesini saklama kapasitesine sahip bir dizi oluşturmak gerekliydi.
Peki programcılar ne buldu? ArrayList
Sınıfla aynı işi yapan Array
, ancak yeniden boyutlandırılabilen sınıfı yazdılar .
ArrayList sınıfı
Sınıfın adı ArrayList
iki kelimeden oluşur: Array + List. Array
bir dizidir ve List
bir listedir.
Her ArrayList
nesne sıradan bir eleman dizisi içerir. Bir öğesinden öğeleri okuduğunuzda ArrayList
, nesne bunları kendi iç dizisinden alır. Öğeleri yazdığınızda, onları dahili diziye yazar.
ArrayList sınıfı, dizilerin sahip olduğu tüm dezavantajlardan yoksundur. Nasıl yapılacağını bilir:
- Belirli bir türdeki öğeleri saklayın
- Listeyi dinamik olarak yeniden boyutlandır
- Listenin sonuna eleman ekle
- Listenin başına veya ortasına öğe ekle
- Listedeki herhangi bir yerden öğeleri kaldırın
Daha fazla ayrıntı için aşağıya bakın:
2. Bir ArrayList
nesne oluşturma
Bir nesne oluşturmak için ArrayList
şöyle bir kod yazmanız gerekir:
ArrayList<TypeParameter> name = new ArrayList<TypeParameter>();
ArrayList
Koleksiyon türü/sınıfı nerede, koleksiyonda TypeParameter
depolanan öğelerin türü ArrayList
ve name
bir değişkenin adıdır ArrayList<TypeParameter>
.
Değişkenin name
genel bir türü vardır. İki türden oluşur: önce koleksiyonun türü belirtilir ve ardından koleksiyonda depolanan öğelerin türünü belirtmek için köşeli parantezler kullanılır.
Örnekler:
kod | Tanım |
---|---|
|
tam sayıların listesi |
|
Dizelerin listesi |
|
Gerçek sayıların listesi |
Dizilerin aksine, koleksiyonlar ilkel türleri depolayamaz, yalnızca referans türleri depolayabilir . Bu nedenle, bir s koleksiyonuna ihtiyacınız varsa int
, Integer
bunun yerine sarmalayıcı sınıfını kullanın.
3. İşlemlerArrayList
Başlangıçta, yeni oluşturulan listenin uzunluğu, 0 öğe içerdiğinden sıfırdır. Listeye bir eleman eklerseniz uzunluğu 1 artar. Eklenen elemanı kaldırırsanız uzunluk tekrar sıfıra düşer.
Aşağıdaki tablo size sınıfın yöntemleri hakkında daha fazla bilgi verebilir ArrayList
:
Yöntemler | Tanım |
---|---|
|
Geçen öğeyi listeye ekler |
|
Listede belirli bir konuma bir öğe ekler. |
|
Dizini olan öğeyi döndürürindex |
|
value Dizini olan öğeye atarindex |
|
Dizini olan öğeyi kaldırır index . Kaldırılan öğeyi döndürür. |
|
Yönteme ilettiğiniz öğeyi kaldırır. Bu türden birden fazla öğe varsa, ilki kaldırılacaktır. |
|
Listeyi temizler, yani listedeki tüm öğeleri kaldırır. |
|
Listenin içerip içermediğini kontrol eder value . |
|
Listenin boş olup olmadığını kontrol eder. Başka bir deyişle, listenin uzunluğunun sıfır olup olmadığı. |
|
Listenin boyutunu, yani listedeki öğe sayısını döndürür. |
|
Listenin öğelerini içeren bir dizi döndürür. Diziyi yönteme geçirmeniz gerekir. |
Bu yöntemler, listeyle yapmak isteyebileceğiniz hemen hemen her şeyi yapmanızı sağlar: öğeleri değiştirin, öğeler ekleyin ve öğeleri kaldırın. Listeyi tek bir komutla temizleyebilir, hatta listeyi bir diziye dönüştürebilirsiniz.
4. Karşılaştırma ArrayList
veArray
ArrayList
Bir diziyi karşılaştırmaktan kaçınabileceğimizi sanmıyorum .
Dizilerle gerçekleştirebileceğiniz yalnızca 4 eylem vardır:
- Dizi oluştur
- Dizine göre bir öğe al
- Bir öğeyi dizine göre ayarla
- Dizinin uzunluğunu al
İşte bir dizi ve an için geçerli olan bu işlemler ArrayList
:
Sıralamak | Dizi Listesi |
---|---|
|
|
|
|
|
|
|
|
ArrayList
Bir dizinin nasıl çalıştığına karşı a'nın nasıl çalıştığını karşılaştıralım . Örneğin, şu görevi uygulayalım: "klavyeden 10 dize oku ve bunları ekranda ters sırada göster"
Diziyi Kullanma | ArrayList'i Kullanma |
---|---|
|
|
Analoji açıktır. Diziler için her şey bir şekilde daha kısa ve net. Ancak ArrayList
zor da değil: bir öğe elde etmek için yöntemi kullanıyoruz get()
; bir öğeyi değiştirmek için set()
yöntem; listenin uzunluğunu almak için, size()
yöntem.
Peki programcılar neden sınıfı kullanıyor ArrayList
?
Elbette asıl mesele, sıradan dizilerin sahip olmadığı diğer tüm yöntemlerdir:
- Listeye bir öğe ekleyin
- Listenin ortasına bir öğe ekleyin
- Listede bir öğe bulun
- Bir öğeyi listeden kaldırma
GO TO FULL VERSION