OCA Java imtahan mövzuları

ArrayList Methods

Aşağıdakı nümunələrdə istifadə olunacaq E class adıdır. ArrayList toString() metodunu implement edir, ona görə də massivlərdən fərqli olaraq listləri toString() metodundan istifadə etməklə print edib normal görünüşdə baxa bilərik.

İndi isə əsas metodlara baxaq:

 

add()

The method signature:

  • boolean add(E element)
    void add(int index, E element)

boolean add() geriyə həmişə true qaytarır.

Nümunə:

ArrayList<String> cars = new ArrayList<>();
cars.add("bmw");
cars.add(Boolean.TRUE);   // does not compile

Generic tipi String olduğundan başqa tipdə dəyişən qəbul etmir. Amma generic ilə non-generic`i mix edəndə compile səhvi vermir, sadəcə xəbərdarlıq (warning) verir

ArrayList cars = new ArrayList<String>();
cars.add("bmw");
cars.add(Boolean.TRUE);

Başqa nümunəyə baxaq:

List<String> cars = new ArrayList();
cars.add("bmw");                // [bmw]
cars.add(1, "mercedes");        // [bmw, mercedes]         
cars.add(0, "kia motors");      // [kia motors, bmw, mercedes]
cars.add(1, "toyota");          // [kia motors, toyota, bmw, mercedes]
System.out.println(cars);       // [kia motors, toyota, bmw, mercedes]

Əgər hər hansısa indeksə yeni element əlavə etmək istəyirsinizsə, o zaman əlavə etmək istədiyiniz indeksin maksimum nömrəsi listin ölçüsünə (size) bərabər olmalıdır, əks halda IndexOutOfBoundsException verəcək. Yəni əlavə etmək istədiyiniz indeksdən əvvəlki indeksdə mütləq element olmalıdır.

  • cars.add(5, "moskvich");   // throws IndexOutOfBoundsException

Aşağıdakı nümunəni run etsək, ekrana “1 ” çap olunacaq, amma break ifadəsini kommentə salsaq NullPointerException baş verəcək. Exceptionun baş verməməsi üçün x dəyişəninin tipini Integer edə bilərik. Bu zaman ekrana çap olunan yazı belə olacaq: 1 null 3

List<Integer> list = new ArrayList<>();
list.add(1);
list.add(null);
list.add(3);
for (int x : list) {
    System.out.print(x + " "); break;
}

 

remove()

The method signature:

  • boolean remove(Object object)
    E remove(int index)

Birinci metod ArrayList`də göndərilən object`ə uyğun gələn birinci elementi silir və nəticə olaraq geriyə true qaytarır. Yox əgər həmin element listdə mövcud deyilsə, geriyə false qaytarır.

İkinci metod göndərilən indeksdə olan elementi silir və geriyə sildiyi indeksdə mövcud olan elementi qaytarır. Əgər həmin indeks listin ölçüsündən böyük olarsa exception baş verir.

List<String> cars = new ArrayList();
cars.add("bmw");                             // [bmw]
cars.add("mercedes");                        // [bmw, mercedes]         
cars.add("bmw");                             // [bmw, mercedes, bmw]
System.out.println(cars.remove("toyota"));   // false
System.out.println(cars.remove("bmw"));      // true
System.out.println(cars.remove(0));          // mercedes
System.out.println(cars);                    // [bmw]

Bu metod ilə bağlı ən çaşdırıcı nümunələr adətən aşağıdakı formada olur. Sizcə nə çap olunacaq?

List<Integer> list = new ArrayList<>();
list.add(1);
list.add(2);
list.remove(1);
System.out.println(list);

Göründüyü kimi listə 1 və 2 rəqəmləri əlavə edilir və sonra remove metodu çağırılır. Bu proseslərdən sonra ağıla ilk gələn fikir o olur ki, 1 silinir və 2 qalır. Son olaraq da 2 çap olunur. Amma əslində elə deyil. remove() overload metod olduğundan, overload qaydalarına görə (bu barədə chapter 4’də məlumat veriləcək) yuxarıda “signature”də göstərilən 2-ci metod çağırılır. Ona görə də bu nümunədəki remove metodu elementin dəyərini deyil, onun indeksini göstərir. Bu səbəbdən 1-ci indeksdəki element (2) silinir. Əgər 1 dəyərinin silinməsini istəyiriksə, o zaman remove metodunu aşağıkı formada yazmalıyıq:

  • list.remove(new Integer(1));

 

set()

The method signature:

  • E set(int index, E newElement)

Bu metod ArrayList`in qeyd olunmuş indeksdəki elementini newElement ilə əvəz edir və geriyə əvəz edilmiş yeni elementi qaytarır. Bu zaman listin ölçüsü dəyişilmir.

List<String> cars = new ArrayList();
cars.add("ford");                    // [ford]
System.out.println(cars.size());     // 1
cars.set(0, "honda");                // [honda]
System.out.println(cars.size());     // 1
cars.set(1, "lada");                 // throws IndexOutOfBoundsException

 

isEmpty() and size()

The method signature:

  • boolean isEmpty()
    int size()

Nümunə:

System.out.println(cars.isEmpty());  // true
System.out.println(cars.size());     // 0
cars.add("nissan");
cars.add("ferrari");
System.out.println(cars.isEmpty());  // false
System.out.println(cars.size());     // 2

 

clear()

The method signature:

  • void clear()

Nümunə:

ArrayList<String> cars = new ArrayList<>();
cars.add("infiniti");    // [infiniti]
cars.add("mazda");       // [infiniti, mazda]
cars.clear();            // []

 

contains()

The method signature:

  • boolean contains(Object object)

Nümunə:

ArrayList<String> cars = new ArrayList<>();
cars.add("kamaz");                            // [kamaz]
System.out.println(cars.contains("kamaz"));   // true
System.out.println(cars.contains("maz"));     // false

Bu metod uyğunluq olub olmadığını yoxladığına görə hər element üçün equals() metodunu çağırır.

 

equals()

The method signature:

  • boolean equals(Object object)

ArrayList equals() metodunu implement/override edir (birbaşa deyil, dolayı yol ilə), ona görə də iki listdə eyni elementlərin eyni ardıcıllıqda gəlib gəlmədiyini müqayisə etmək olar.

Nümunə:

List<String> one = new ArrayList<>();
List<String> two = new ArrayList<>();
System.out.println(one.equals(two));      // true
one.add("a");                             // [a]
System.out.println(one.equals(two));      // false
two.add("a");                             // [a]
System.out.println(one.equals(two));      // true
one.add("b");                             // [a, b]
two.add(0,"b");                           // [b, a]
System.out.println(one.equals(two));      // false,ardıcıllıq fərqli olduğuna görə

 

sublist()

The method signature:

  • List<E> subList(int fromIndex, int toIndex)

Geriyə yeni list qaytarır. fromIndex daxildir, toIndex daxil deyil.

Nümunə:

List s1 = new ArrayList( );
s1.add("a");
s1.add("b");
s1.add(1, "c");
List s2 = new ArrayList(s1.subList(1, 2));
s1.addAll(s2);
System.out.println(s1);  // [a, c, b, c]

 

String, StringBuilder ArrayList metodlarını suallarda tez-tez bir-biri ilə qarışdırırdım, hansı metodun hansı class’a aid olduğunu həmin vaxt dəqiq xatırlaya bilmirdim və bu da səhv cavablarla nəticələnirdi. Bu hal bir neçə dəfə təkrarlandığı üçün həmin metodları cədvəl şəklində qruplaşdırdım. Cədvəldə əsasən imtahanda düşən metodlar qeyd olunub. Eyni sətirdə qeyd olunan metodlar mahiyyət baxımından təxminən bir-biri ilə eyni işi görürlər.

String StringBuilder

ArrayList

concat() append(),  insert() add()
replace()  (2 parametrli)  replace()  (3 parametrli) set()
length() length() size()
deleteCharAt() remove()
delete() clear()
equals(),  equalsIgnoreCase() equals()
contains() contains()
isEmpty()
charAt() charAt()
indexOf() indexOf()
substring() substring()
toLowerCase()
toUpperCase()
startWith()
endWith()
trim()
reverse()
toString()

 

[topics lang=az]

About the author

Mushfiq Mammadov

Leave a Comment


The reCAPTCHA verification period has expired. Please reload the page.

 

This site uses Akismet to reduce spam. Learn how your comment data is processed.