Java Dizi Listesi sınıf bir kullanır dinamik sıralamak elemanları depolamak için. Bir diziye benziyor ama var boyut sınırı yok . İstediğiniz zaman öğe ekleyebilir veya kaldırabiliriz. Yani geleneksel diziden çok daha esnektir. İçinde bulunur java.util paket. C++'daki Vector'e benzer.
kelime kaydırma css
Java'daki ArrayList aynı zamanda yinelenen öğelere de sahip olabilir. Liste arayüzünü uygular, böylece Liste arayüzünün tüm yöntemlerini burada kullanabiliriz. ArrayList ekleme sırasını dahili olarak korur.
AbstractList sınıfını miras alır ve uygular Liste arayüzü .
Java ArrayList sınıfıyla ilgili önemli noktalar şunlardır:
- Java ArrayList sınıfı yinelenen öğeler içerebilir.
- Java ArrayList sınıfı ekleme sırasını korur.
- Java ArrayList sınıfı değil senkronize .
- Java ArrayList, dizi indeks esasına göre çalıştığı için rastgele erişime izin verir.
- ArrayList'te manipülasyon, Java'daki LinkedList'ten biraz daha yavaştır çünkü dizi listesinden herhangi bir öğe kaldırılırsa çok fazla kaydırma yapılması gerekir.
- İnt, float, char vb. gibi primitif tiplerden dizi listesi oluşturamıyoruz. Bu gibi durumlarda gerekli sarmalayıcı sınıfının kullanılması gerekmektedir. Örneğin:
ArrayList al = ArrayList(); // does not work ArrayList al = new ArrayList(); // works fine
- Java ArrayList boyuta göre başlatılır. Dizi listesindeki boyut dinamiktir ve listeye eklenen veya listeden kaldırılan öğelere göre değişir.
ArrayList sınıfının hiyerarşisi
Yukarıdaki şemada gösterildiği gibi, Java ArrayList sınıfı, List arayüzünü uygulayan AbstractList sınıfını genişletir. Liste arayüzü şunları genişletir: Toplamak ve Hiyerarşik sırayla yinelenebilir arayüzler.
ArrayList sınıf bildirimi
Java.util.ArrayList sınıfının bildirimine bakalım.
public class ArrayList extends AbstractList implements List, RandomAccess, Cloneable, Serializable
ArrayList'in yapıcıları
Oluşturucu | Tanım |
---|---|
DiziListesi() | Boş bir dizi listesi oluşturmak için kullanılır. |
ArrayList(Koleksiyon c) | C koleksiyonunun öğeleriyle başlatılan bir dizi listesi oluşturmak için kullanılır. |
ArrayList(int kapasite) | Belirtilen başlangıç kapasitesine sahip bir dizi listesi oluşturmak için kullanılır. |
ArrayList'in Yöntemleri
Yöntem | Tanım |
---|---|
geçersiz eklemek (int indeksi, E öğesi) | Belirtilen öğeyi listede belirtilen konuma eklemek için kullanılır. |
boolean eklemek (Ve ve) | Belirtilen elemanı listenin sonuna eklemek için kullanılır. |
boolean addAll (Koleksiyon c) | Belirtilen koleksiyondaki tüm öğeleri, belirtilen koleksiyonun yineleyicisi tarafından döndürüldükleri sıraya göre bu listenin sonuna eklemek için kullanılır. |
boolean addAll (int dizini, Koleksiyon c) | Listenin belirtilen konumundan başlayarak, belirtilen koleksiyondaki tüm öğeleri eklemek için kullanılır. |
geçersiz temizle () | Bu listedeki tüm öğeleri kaldırmak için kullanılır. |
void ProvidCapacity(int requireCapacity) | ArrayList örneğinin kapasitesini artırmak için kullanılır. |
E get(int indeksi) | Listenin belirli bir konumundan öğeyi getirmek için kullanılır. |
boolean isEmpty() | Liste boşsa true, değilse false değerini döndürür. |
Yineleyici() | |
listIterator() | |
int lastIndexOf(Object o) | Belirtilen öğenin son oluşumunun bu listedeki indeksini döndürmek için veya liste bu öğeyi içermiyorsa -1'i döndürmek için kullanılır. |
Object[] toArray() | Bu listedeki tüm elemanları içeren bir diziyi doğru sırayla döndürmek için kullanılır. |
T[] toArray(T[] a) | Bu listedeki tüm elemanları içeren bir diziyi doğru sırayla döndürmek için kullanılır. |
Nesne klonu() | ArrayList'in sığ bir kopyasını döndürmek için kullanılır. |
boolean içerir(Nesne o) | Liste belirtilen öğeyi içeriyorsa true değerini döndürür. |
int indexOf(Nesne o) | Belirtilen öğenin ilk geçtiği yerin bu listedeki indeksini döndürmek için veya Liste bu öğeyi içermiyorsa -1'i döndürmek için kullanılır. |
E kaldır(int dizini) | Listede belirtilen konumda bulunan elemanı kaldırmak için kullanılır. |
boolean kaldırma (Nesne o) | Belirtilen öğenin ilk oluşumunu kaldırmak için kullanılır. |
boolean RemoveAll (Koleksiyon c) | Listedeki tüm elemanları kaldırmak için kullanılır. |
boolean RemoveIf(Yüklem filtresi) | Verilen yüklemi karşılayan tüm öğeleri listeden çıkarmak için kullanılır. |
korumalı void RemoveRange (int fromIndex, int toIndex) | Verilen aralıkta yer alan tüm elemanları kaldırmak için kullanılır. |
void replacementAll(UnaryOperator operatörü) | Listedeki tüm elemanları belirtilen elemanla değiştirmek için kullanılır. |
void keepAll (Koleksiyon c) | Belirtilen koleksiyonda bulunan listedeki tüm öğeleri korumak için kullanılır. |
E set(int indeksi, E elemanı) | Listede belirtilen konumda bulunan belirtilen öğeyi değiştirmek için kullanılır. |
geçersiz sıralama (Karşılaştırıcı c) | Listenin elemanlarını belirtilen karşılaştırıcıya göre sıralamak için kullanılır. |
Ayırıcı bölücü() | Bir listedeki öğeler üzerinde ayırıcı oluşturmak için kullanılır. |
subList'i listele(int fromIndex, int toIndex) | Verilen aralıkta yer alan tüm elemanları getirmek için kullanılır. |
int boyut() | Listedeki elemanların sayısını döndürmek için kullanılır. |
geçersiz trimToSize() | Bu ArrayList örneğinin kapasitesini listenin geçerli boyutuna göre kırpmak için kullanılır. |
Java Genel Olmayan Vs. Jenerik Koleksiyon
Java toplama çerçevesi, JDK 1.5'ten önce genel değildi. 1.5'ten beri geneldir.
Java'nın yeni genel koleksiyonu, bir koleksiyonda yalnızca bir tür nesneye sahip olmanızı sağlar. Artık tür açısından güvenlidir, dolayısıyla çalışma zamanında tür değiştirmeye gerek yoktur.
Java koleksiyonu oluşturmanın eski, genel olmayan örneğini görelim.
ArrayList list=new ArrayList();//creating old non-generic arraylist
Java koleksiyonu oluşturmanın yeni genel örneğini görelim.
ArrayList list=new ArrayList();//creating new generic arraylist
Genel bir koleksiyonda türü köşeli ayraçlarla belirtiriz. Artık ArrayList, içinde belirtilen tek nesne türüne sahip olmaya zorlanır. Başka türde bir nesne eklemeye çalışırsanız, derleme zamanı hatası .
Java jenerikleri hakkında daha fazla bilgi için burayı tıklayın Java Jenerikleri Eğitimi .
Java ArrayList Örneği
Dosya adı: DiziListesiÖrnek1.java
import java.util.*; public class ArrayListExample1{ public static void main(String args[]){ ArrayList list=new ArrayList();//Creating arraylist list.add('Mango');//Adding object in arraylist list.add('Apple'); list.add('Banana'); list.add('Grapes'); //Printing the arraylist object System.out.println(list); } }Şimdi Test Edin
Çıktı:
[Mango, Apple, Banana, Grapes]
Iterator kullanarak ArrayList'in yinelenmesi
Iterator arayüzünü kullanarak ArrayList öğelerini çaprazlamak için bir örnek görelim.
Dosya adı: DiziListesiÖrnek2.java
import java.util.*; public class ArrayListExample2{ public static void main(String args[]){ ArrayList list=new ArrayList();//Creating arraylist list.add('Mango');//Adding object in arraylist list.add('Apple'); list.add('Banana'); list.add('Grapes'); //Traversing list through Iterator Iterator itr=list.iterator();//getting the Iterator while(itr.hasNext()){//check if iterator has the elements System.out.println(itr.next());//printing the element and move to next } } }Şimdi Test Edin
Çıktı:
Mango Apple Banana Grapes
For-each döngüsünü kullanarak ArrayList'in yinelenmesi
ArrayList öğelerinde for-each döngüsünü kullanarak geçiş yapmak için bir örnek görelim
Dosya adı: DiziListesiÖrnek3.java
import java.util.*; public class ArrayListExample3{ public static void main(String args[]){ ArrayList list=new ArrayList();//Creating arraylist list.add('Mango');//Adding object in arraylist list.add('Apple'); list.add('Banana'); list.add('Grapes'); //Traversing list through for-each loop for(String fruit:list) System.out.println(fruit); } }
Çıktı:
Şimdi Test EdinMango Apple Banana Grapes
ArrayList'i Alma ve Ayarlama
get() yöntemi belirtilen dizindeki öğeyi döndürür, oysa set() yöntemi elemanı değiştirir.
Dosya adı: DiziListesiÖrnek4.java
import java.util.*; public class ArrayListExample4{ public static void main(String args[]){ ArrayList al=new ArrayList(); al.add('Mango'); al.add('Apple'); al.add('Banana'); al.add('Grapes'); //accessing the element System.out.println('Returning element: '+al.get(1));//it will return the 2nd element, because index starts from 0 //changing the element al.set(1,'Dates'); //Traversing list for(String fruit:al) System.out.println(fruit); } }Şimdi Test Edin
Çıktı:
Returning element: Apple Mango Dates Banana Grapes
ArrayList Nasıl Sıralanır
java.util paket bir yardımcı program sınıfı sağlar Koleksiyonlar statik yöntem sort()'a sahiptir. Kullanmak Koleksiyonlar.sort() yöntemiyle ArrayList'i kolayca sıralayabiliriz.
Dosya adı: SortArrayList.java
import java.util.*; class SortArrayList{ public static void main(String args[]){ //Creating a list of fruits List list1=new ArrayList(); list1.add('Mango'); list1.add('Apple'); list1.add('Banana'); list1.add('Grapes'); //Sorting the list Collections.sort(list1); //Traversing list through the for-each loop for(String fruit:list1) System.out.println(fruit); System.out.println('Sorting numbers...'); //Creating a list of numbers List list2=new ArrayList(); list2.add(21); list2.add(11); list2.add(51); list2.add(1); //Sorting the list Collections.sort(list2); //Traversing list through the for-each loop for(Integer number:list2) System.out.println(number); } }
Çıktı:
Apple Banana Grapes Mango Sorting numbers... 1 11 21 51
Java'da koleksiyonun öğelerini yinelemenin yolları
Koleksiyon öğeleri arasında geçiş yapmanın çeşitli yolları vardır:
- Yineleyici arayüzü ile.
- Her döngü için.
- ListIterator arayüzü ile.
- For döngüsü tarafından.
- forEach() yöntemiyle.
- forEachRemaining() yöntemiyle.
Toplamanın kalan yöntemlerle yinelenmesi
ArrayList öğelerini başka yollarla geçirmeye yönelik bir örnek görelim
Dosya adı: ArrayList4.java
import java.util.*; class ArrayList4{ public static void main(String args[]){ ArrayList list=new ArrayList();//Creating arraylist list.add('Ravi');//Adding object in arraylist list.add('Vijay'); list.add('Ravi'); list.add('Ajay'); System.out.println('Traversing list through List Iterator:'); //Here, element iterates in reverse order ListIterator list1=list.listIterator(list.size()); while(list1.hasPrevious()) { String str=list1.previous(); System.out.println(str); } System.out.println('Traversing list through for loop:'); for(int i=0;i<list.size();i++) { system.out.println(list.get(i)); } system.out.println('traversing list through foreach() method:'); the method is a new feature, introduced in java 8. list.foreach(a->{ //Here, we are using lambda expression System.out.println(a); }); System.out.println('Traversing list through forEachRemaining() method:'); Iterator itr=list.iterator(); itr.forEachRemaining(a-> //Here, we are using lambda expression { System.out.println(a); }); } } </list.size();i++)>
Çıktı:
Traversing list through List Iterator: Ajay Ravi Vijay Ravi Traversing list through for loop: Ravi Vijay Ravi Ajay Traversing list through forEach() method: Ravi Vijay Ravi Ajay Traversing list through forEachRemaining() method: Ravi Vijay Ravi Ajay
Java ArrayList'te kullanıcı tanımlı sınıf nesneleri
Öğrenci sınıfı nesnesini bir dizi listesinde sakladığımız bir örneği görelim.
Dosya adı: ArrayList5.java
class Student{ int rollno; String name; int age; Student(int rollno,String name,int age){ this.rollno=rollno; this.name=name; this.age=age; } }
import java.util.*; class ArrayList5{ public static void main(String args[]){ //Creating user-defined class objects Student s1=new Student(101,'Sonoo',23); Student s2=new Student(102,'Ravi',21); Student s2=new Student(103,'Hanumat',25); //creating arraylist ArrayList al=new ArrayList(); al.add(s1);//adding Student class object al.add(s2); al.add(s3); //Getting Iterator Iterator itr=al.iterator(); //traversing elements of ArrayList object while(itr.hasNext()){ Student st=(Student)itr.next(); System.out.println(st.rollno+' '+st.name+' '+st.age); } } }
Çıktı:
101 Sonoo 23 102 Ravi 21 103 Hanumat 25
Java ArrayList Serileştirme ve Seriden Çıkarma Örneği
Bir ArrayList nesnesini serileştirmek ve ardından seri durumdan çıkarmak için bir örnek görelim.
Dosya adı: ArrayList6.java
import java.io.*; import java.util.*; class ArrayList6 { public static void main(String [] args) { ArrayList al=new ArrayList(); al.add('Ravi'); al.add('Vijay'); al.add('Ajay'); try { //Serialization FileOutputStream fos=new FileOutputStream('file'); ObjectOutputStream oos=new ObjectOutputStream(fos); oos.writeObject(al); fos.close(); oos.close(); //Deserialization FileInputStream fis=new FileInputStream('file'); ObjectInputStream ois=new ObjectInputStream(fis); ArrayList list=(ArrayList)ois.readObject(); System.out.println(list); }catch(Exception e) { System.out.println(e); } } }
Çıktı:
[Ravi, Vijay, Ajay]
Öğe eklemek için Java ArrayList örneği
Burada öğe eklemenin farklı yollarını görüyoruz.
Dosya adı: ArrayList7.java
import java.util.*; class ArrayList7{ public static void main(String args[]){ ArrayList al=new ArrayList(); System.out.println('Initial list of elements: '+al); //Adding elements to the end of the list al.add('Ravi'); al.add('Vijay'); al.add('Ajay'); System.out.println('After invoking add(E e) method: '+al); //Adding an element at the specific position al.add(1, 'Gaurav'); System.out.println('After invoking add(int index, E element) method: '+al); ArrayList al2=new ArrayList(); al2.add('Sonoo'); al2.add('Hanumat'); //Adding second list elements to the first list al.addAll(al2); System.out.println('After invoking addAll(Collection c) method: '+al); ArrayList al3=new ArrayList(); al3.add('John'); al3.add('Rahul'); //Adding second list elements to the first list at specific position al.addAll(1, al3); System.out.println('After invoking addAll(int index, Collection c) method: '+al); } }
Çıktı:
Initial list of elements: [] After invoking add(E e) method: [Ravi, Vijay, Ajay] After invoking add(int index, E element) method: [Ravi, Gaurav, Vijay, Ajay] After invoking addAll(Collection c) method: [Ravi, Gaurav, Vijay, Ajay, Sonoo, Hanumat] After invoking addAll(int index, Collection c) method: [Ravi, John, Rahul, Gaurav, Vijay, Ajay, Sonoo, Hanumat]
Öğeleri kaldırmak için Java ArrayList örneği
Burada bir öğeyi kaldırmanın farklı yollarını görüyoruz.
Dosya adı: ArrayList8.java
import java.util.*; class ArrayList8 { public static void main(String [] args) { ArrayList al=new ArrayList(); al.add('Ravi'); al.add('Vijay'); al.add('Ajay'); al.add('Anuj'); al.add('Gaurav'); System.out.println('An initial list of elements: '+al); //Removing specific element from arraylist al.remove('Vijay'); System.out.println('After invoking remove(object) method: '+al); //Removing element on the basis of specific position al.remove(0); System.out.println('After invoking remove(index) method: '+al); //Creating another arraylist ArrayList al2=new ArrayList(); al2.add('Ravi'); al2.add('Hanumat'); //Adding new elements to arraylist al.addAll(al2); System.out.println('Updated list : '+al); //Removing all the new elements from arraylist al.removeAll(al2); System.out.println('After invoking removeAll() method: '+al); //Removing elements on the basis of specified condition al.removeIf(str -> str.contains('Ajay')); //Here, we are using Lambda expression System.out.println('After invoking removeIf() method: '+al); //Removing all the elements available in the list al.clear(); System.out.println('After invoking clear() method: '+al); } }
Çıktı:
An initial list of elements: [Ravi, Vijay, Ajay, Anuj, Gaurav] After invoking remove(object) method: [Ravi, Ajay, Anuj, Gaurav] After invoking remove(index) method: [Ajay, Anuj, Gaurav] Updated list : [Ajay, Anuj, Gaurav, Ravi, Hanumat] After invoking removeAll() method: [Ajay, Anuj, Gaurav] After invoking removeIf() method: [Anuj, Gaurav] After invoking clear() method: []
keepAll() yönteminin Java ArrayList örneği
Dosya adı: ArrayList9.java
import java.util.*; class ArrayList9{ public static void main(String args[]){ ArrayList al=new ArrayList(); al.add('Ravi'); al.add('Vijay'); al.add('Ajay'); ArrayList al2=new ArrayList(); al2.add('Ravi'); al2.add('Hanumat'); al.retainAll(al2); System.out.println('iterating the elements after retaining the elements of al2'); Iterator itr=al.iterator(); while(itr.hasNext()){ System.out.println(itr.next()); } } }
Çıktı:
iterating the elements after retaining the elements of al2 Ravi
isEmpty() yönteminin Java ArrayList örneği
Dosya adı: ArrayList4.java
import java.util.*; class ArrayList10{ public static void main(String [] args) { ArrayList al=new ArrayList(); System.out.println('Is ArrayList Empty: '+al.isEmpty()); al.add('Ravi'); al.add('Vijay'); al.add('Ajay'); System.out.println('After Insertion'); System.out.println('Is ArrayList Empty: '+al.isEmpty()); } }
Çıktı:
Is ArrayList Empty: true After Insertion Is ArrayList Empty: false
Java ArrayList Örneği: Kitap
Listeye kitap eklediğimiz ve tüm kitapları yazdırdığımız bir ArrayList örneğini görelim.
Dosya adı: DiziListesiÖrnek20.java
import java.util.*; class Book { int id; String name,author,publisher; int quantity; public Book(int id, String name, String author, String publisher, int quantity) { this.id = id; this.name = name; this.author = author; this.publisher = publisher; this.quantity = quantity; } } public class ArrayListExample20 { public static void main(String[] args) { //Creating list of Books List list=new ArrayList(); //Creating Books Book b1=new Book(101,'Let us C','Yashwant Kanetkar','BPB',8); Book b2=new Book(102,'Data Communications and Networking','Forouzan','Mc Graw Hill',4); Book b3=new Book(103,'Operating System','Galvin','Wiley',6); //Adding Books to list list.add(b1); list.add(b2); list.add(b3); //Traversing list for(Book b:list){ System.out.println(b.id+' '+b.name+' '+b.author+' '+b.publisher+' '+b.quantity); } } }Şimdi Test Edin
Çıktı:
101 Let us C Yashwant Kanetkar BPB 8 102 Data Communications and Networking Forouzan Mc Graw Hill 4 103 Operating System Galvin Wiley 6
ArrayList'in Boyutu ve Kapasitesi
Bir dizi listesinin boyutu ve kapasitesi, yeni başlayanların kafa karıştırıcı bulduğu iki terimdir. Bu bölümde bunu bazı örneklerin yardımıyla anlayalım. Aşağıdaki kod parçacığını göz önünde bulundurun.
Dosya adı: SizeCapacity.java
import java.util.*; public class SizeCapacity { public static void main(String[] args) throws Exception { ArrayList al = new ArrayList(); System.out.println('The size of the array is: ' + al.size()); } }
Çıktı:
The size of the array is: 0
Açıklama: Dizi listesiyle hiçbir şey yapmadığımız için çıktı anlamlıdır. Şimdi aşağıdaki programı gözlemleyin.
Dosya adı: BoyutKapasite1.java
import java.util.*; public class SizeCapacity1 { public static void main(String[] args) throws Exception { ArrayList al = new ArrayList(10); System.out.println('The size of the array is: ' + al.size()); } }
Çıktı:
The size of the array is: 0
Açıklama: Boyutun hala 0 olduğunu görüyoruz ve bunun nedeni de 10 sayısının boyutu değil kapasiteyi temsil etmesidir. Aslında boyut, dizide bulunan toplam öğe sayısını temsil eder. Herhangi bir öğe eklemediğimiz için her iki programda da dizi listesinin boyutu sıfırdır.
Kapasite, dizi listesinin içerebileceği toplam öğe sayısını temsil eder. Bu nedenle, bir dizi listesinin kapasitesi her zaman dizi listesinin boyutundan büyük veya ona eşittir. Dizi listesine bir eleman eklediğimizde dizi listesinin boyutunun kapasiteye eşit olup olmadığını kontrol eder. Evetse, dizi listesinin kapasitesi artar. Yani yukarıdaki örnekte, listeye 10 eleman eklenene kadar kapasite 10 olacaktır. 11'i eklediğimizdeoelemanın kapasitesi artar. Her iki örnekte de dizi listesinin kapasitesinin 10 olduğuna dikkat edin. İlk durumda dizi listesinin varsayılan kapasitesi 10 olduğundan kapasite 10'dur. İkinci durumda dizinin kapasitesinden açıkça bahsetmiştik. liste 10'dur.
Not: Dizi listesinde kapasitenin nasıl arttığını anlatacak standart bir yöntem yoktur. Aslında kapasite artışlarının şekli bir GDK sürümünden diğerine farklılık göstermektedir. Bu nedenle GDK’da kapasite artış kodunun uygulanma şeklinin kontrol edilmesi gerekmektedir. ArrayList sınıfında dizi listesinin kapasitesini döndüren önceden tanımlanmış herhangi bir yöntem yoktur. Bu nedenle, daha iyi anlamak için Vector sınıfının kapasite() yöntemini kullanın. ArrayList sınıfında ve Vector sınıfında boyut ve kapasite mantığı aynıdır.
İlgili konular
Java'da ArrayList Nasıl Sıralanır
Dizi ve ArrayList arasındaki fark
Java'da ArrayList ve LinkedList ne zaman kullanılır?
ArrayList ve LinkedList arasındaki fark
ArrayList ve Vector arasındaki fark
Java'da İki ArrayList Nasıl Karşılaştırılır
Java'da ArrayList nasıl tersine çevrilir
Java'da ArrayList ve LinkedList ne zaman kullanılır?
ArrayList'i Salt Okunur hale getirme
Java'da ArrayList'in dizi uzunluğu ile size() arasındaki fark
Java'da ArrayList nasıl senkronize edilir
Java'da ArrayList'i Array'e ve Array'i ArrayList'e dönüştürme
Java'da Array ve ArrayList karşılaştırması
Java ArrayList'i Azalan Sırada Sıralama
Java'da ArrayList'ten kopyalar nasıl kaldırılır