OCA Java imtahan mövzuları

Converting Between array and List

ArrayList‘in massivə çevrilməsi üçün List interfeysinin toArray() metodundan istifadə edilir:

List<String> list = new ArrayList<>();
list.add("element1");
list.add("element2");
Object[] objectArray = list.toArray();
System.out.println(objectArray.length);         // 2
String[] stringArray = list.toArray(new String[0]);
System.out.println(stringArray.length);         // 2

toArray() metodu geriyə Object tipli massiv qaytarır, ona görə də default olaraq yaranan massivin tipi Object tipidir. Əgər massivin tipini xüsusi olaraq təyin etmək istəyiriksə, o zaman 8-ci sətirdəki kimi həmin tipi toArray() metoduna parametr olaraq göndəririk. new String[0] belə yazdıqda 0-a görə mənimsədilən listin öz ölçüsünü massivə verir. Ancaq 0-ın əvəzinə yazılan rəqəm əgər mənimsədilən listin ölçüsündən kiçik olarsa o zaman listin ölçüsü massivin ölçüsü olur, əgər böyük olarsa qalan elementlərin yeri null ilə doldurulur.

// String[] stringArray1 = list.toArray();  // DOES NOT COMPILE   
String[] stringArray2 = list.toArray(new String[4]);
System.out.println(Arrays.toString(stringArray2));  // [element1,element2,null,null]

Əgər massivin ölçüsü qeyd olunmasa compile xətası verəcək:

  • String[] stringArray = list.toArray(new String[]);  // compile error

Massivi listə çevirmək üçün Arrays class`ının asList() metodundan istifadə edilir. Orijinal massiv ilə bu massiv əsasında yaradılmış list bir-biri ilə əlaqəli olur. Yəni bunlardan birinin elementlərinin dəyişilməsi hər ikisinə təsir göstərir, çünki eyni yaddaş sahəsinə müraciət edirlər (point to the same data store). Bu qayda ilə yaradılmış list həm də fixed-size list hesab olunur, ölçüsünün dəyişdirilməsinə icazə verilmir.

String[] array = {"element1", "element2"};  // [element1, element2]
List<String> list = Arrays.asList(array);   // returns fixed size list
System.out.println(list.size());     // 2
list.set(1, "test");                 // [element1,test]
array[0] = "new";                    // [new,test]
for(String b: array)
    System.out.print(b+" ");         // new test
list2.remove(1);                     // throws UnsuppertOperationException

ArrayList<String> list3 = Arrays.asList(array);  //doesn't compile

asList() metodu parametr olaraq varargs qəbul edir. Bir sətirdə list yaradıb elementlərini mənimsətmək mümkündür:

List<String>  list4 = Arrays.asList("one", "two"); 
List<Integer> list5 = Arrays.asList(1, 2);
List<Double>  list6 = Arrays.asList(1., 2.);

List<Integer> list = Arrays.asList(10, 4, -1, 5);
Collections.sort(list);
Integer[] arr = list.toArray(new Integer[4]);
System.out.println(arr[0]);  // -1

 

[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.