Java-da Array və ArrayList arasında fərq
-
Java proqramlaşdırma dilində məlumatların saxlanması və idarə olunması üçün həm massivlər (array), həm də ArrayList-lər geniş istifadə olunur. Hər iki strukturun özünəməxsus xüsusiyyətləri, üstünlükləri və çatışmazlıqları mövcuddur. Bu məqalədə, massivlər və ArrayList-lər arasındakı fərqləri, onların istifadəsini və hansı hallarda daha uyğun olduqlarını araşdıracağıq.
Massivlər (Array)
Massivlər eyni tipli məlumatların sabit ölçülü kolleksiyasını saxlamaq üçün istifadə olunan fundamental məlumat strukturudur. Massivin ölçüsü yaradılarkən təyin edilir və sonradan dəyişdirilə bilməz.
Xüsusiyyətləri:
- Sabit Ölçü: Massivin ölçüsü yaradılarkən müəyyən edilir və sonradan dəyişdirilə bilməz.
- Sürətli Məlumat Əldəetmə: İndeks əsasında məlumatlara sürətli giriş imkanı verir.
- Primitiv və Obyekt Tipləri: Massivlər həm primitiv tipləri (məsələn,
int
,double
), həm də obyektləri saxlaya bilər.
Nümunə:
int[] numbers = new int[3]; numbers[0] = 5; numbers[1] = 10; numbers[2] = 15; System.out.println(numbers[0]); // 5
Çatışmazlıqları:
- Ölçünün Dəyişdirilə Bilməməsi: Massivin ölçüsü sabit olduğundan, əlavə elementlər əlavə etmək üçün yeni bir massiv yaratmaq və mövcud elementləri köçürmək lazımdır.
- Metodların Məhdudluğu: Massivlərdə yalnız əsas əməliyyatlar mövcuddur və əlavə funksionallıq üçün əl ilə kod yazmaq tələb olunur.
ArrayList
ArrayList, Java Collections Framework-ün bir hissəsi olan və dinamik ölçülü massivləri təqlid edən bir classdır. Elementlərin sayına uyğun olaraq avtomatik genişlənə və ya kiçilə bilər.
Xüsusiyyətləri:
- Dinamik Ölçü: Elementlərin sayına uyğun olaraq ölçüsü avtomatik tənzimlənir.
- Metodların Çeşidliliyi: Element əlavə etmək, silmək, axtarmaq və digər əməliyyatlar üçün zəngin metodlar toplusu təqdim edir.
- Yalnız Obyekt Tipləri: ArrayList yalnız obyektləri saxlaya bilər; primitiv tiplər üçün müvafiq wrapper classlardan (məsələn,
int
əvəzinəInteger
) istifadə etmək lazımdır.
Nümunə:
import java.util.ArrayList; public class Example { public static void main(String[] args) { ArrayList<String> fruits = new ArrayList<>(); fruits.add("Alma"); fruits.add("Armud"); fruits.add("Şaftalı"); System.out.println(fruits.get(0)); // "Alma" } }
Üstünlükləri:
- Ölçünün Elastikliyi: Elementlərin sayına uyğun olaraq ölçü avtomatik tənzimlənir, bu da proqramın daha çevik olmasını təmin edir.
- Zəngin Metodlar: Elementlərin idarə olunması üçün müxtəlif metodlar təqdim edir, bu da kodun yazılmasını asanlaşdırır.
Çatışmazlıqları:
- Performans: Bəzi hallarda, xüsusilə böyük həcmli məlumatlarla işləyərkən, ArrayList-lərin performansı massivlərə nisbətən daha aşağı ola bilər.
- Yaddaş İstifadəsi: ArrayList-lər əlavə yaddaş sərfiyyatına səbəb ola bilər, çünki onların ölçüsü dinamik olaraq dəyişir və bu, əlavə yaddaş ayırmalarına gətirib çıxara bilər.
Massiv və ArrayList Arasındakı Fərqlər
Xüsusiyyət Massiv (Array) ArrayList Ölçü Sabit; yaradılarkən təyin edilir və dəyişdirilə bilməz. Dinamik; elementlərin sayına uyğun olaraq avtomatik tənzimlənir. Məlumat Tipi Həm primitiv tipləri, həm də obyektləri saxlaya bilər. Yalnız obyektləri saxlaya bilər; primitiv tiplər üçün wrapper class-lardan istifadə edilir. Metodlar Məhdud; əsas əməliyyatlar üçün nəzərdə tutulub. Zəngin metodlar toplusu təqdim edir (məsələn, add()
,remove()
,contains()
).Performans Daha sürətli; xüsusilə sabit ölçülü və məlum element sayına malik olduqda. Daha çevik, lakin bəzi hallarda performans cəhətdən massivlərə nisbətən zəif ola bilər. Yaddaş İstifadəsi Daha az yaddaş istifadə edir, çünki əlavə metodlar və dinamik ölçü tənzimləməsi yoxdur. Daha çox yaddaş istifadə edə bilər, çünki dinamik ölçü tənzimləməsi və əlavə metodlar mövcuddur. Hansı hallarda hansını seçmək lazımdır?
- Massivlər: Əgər məlumatların sayı əvvəlcədən məlumdursa və sabitdirsə, həmçinin yüksək performans tələb olunursa, massivlər daha uyğun seçimdir.
- ArrayList-lər: Məlumatların sayı dinamik olaraq dəyişirsə və əlavə metodların funksionallığına ehtiyac varsa, ArrayList-lər daha uyğun seçimdir.
Bilik paylaşdıqca artan bir sərvətdir