Sistem dizaynı ilə bağlı müsahibə sualları o qədər açıq ola bilər ki, düzgün hazırlaşmağı bilmək çox çətindir. İndi satın aldıqdan sonra Amazon, Microsoft və Adobe-nin dizayn dövrlərini sındıra bilirəm Bu kitabı. Gündəlik bir yenidən nəzərdən keçirin dizayn sualı və söz verirəm ki, dizayn dövrünü sındıra bilərsiniz.
Java-da LinkedList, mövcud olan xətti bir məlumat quruluşudur java.util
paket. Buna bənzəyir Java-da ArrayList və bir element əlavə etmək, bir element çıxarmaq və s. kimi əməliyyatları həyata keçirə bilərik. Bu təlimatda Java LinkedList haqqında məlumat əldə edəcəyik.
Mündəricat
Java LinkedList
Java LinkedList, hər cür məlumatı saxlaya bilən ikiqat əlaqəli bir siyahıdır. Bu uzanır AbstractList
sinifini həyata keçirir List
və Deque
interfeyslər. Əvvəlki qovşağa və sonrakı ardıcıl qovşağa bir keçid olduğu üçün ikiqat əlaqəli siyahı adlanır. LinkedList bir kolleksiya ehtiva edir qovşaqlarının və xətti bir məlumat quruluşunu həyata keçirir. Hər birinə zəng edirik element bir qovşaq kimi siyahıda. Biz adını ilk kimi siyahıda element baş və sonuncu kimi element quyruq.
Java-da LinkedListin xüsusiyyətləri
- Hər növ element ola bilər
- Təkrarlanan dəyərlərin saxlanmasına imkan verir.
- Yerləşdirmə qaydasını saxlayır.
- Yerləşdirmə zamanı elementlərin dəyişməsi olmadığından massivlərdən daha sürətli olur.
Java-da bir LinkedListin işlənməsi
Müzakirə etdiyimiz kimi, LinkedList ikiqat LinkedList istifadə edir. Bu, hər bir qovşaqda 3 hissə var deməkdir: birinci hissədə əvvəlki qovşağa istinad, ikinci hissədə elementin dəyəri və üçüncü hissədə növbəti qovşağa istinad var. Bunu şəkilli nümayəndəlikdən aydın şəkildə başa düşə bilərsiniz.
LinkedListdəki ilk element olacaqdır null
əvvəlki qovşaqda istinad və LinkedListdəki son element olacaqdır null
növbəti qovşaq istinadında.
Java LinkedList iyerarxiyası
LinkedList-də inşaatçılar
Aşağıda Java LinkedList-də istifadə edə biləcəyimiz 2 qurucu var:
LinkedList Konstruktoru | təsvir |
---|---|
LinkedList () | Boş bir LinkList yaradır |
LinkedList (Kolleksiya c) | Kolleksiyanın bütün elementləri ilə əlaqəli bir siyahı yaradır c. |
Java LinkedList Metodları
Aşağıda siyahı Java LinkedList üçün çox istifadə olunan metodlardan.
Üsul | təsvir | Parametr |
---|---|---|
Mantı əlavə et (Element e) | Göstərilən elementi siyahının sonuna əlavə edir. | e - əlavə ediləcək element. Qaytarma dəyəri - Doğru |
void add (int index, Element e) | Elementi göstərilən indeksə əlavə edir. İndeksdə artıq bir element varsa, o, sağa keçir | indeks - elementin daxil edilməli olduğu indeks e - daxil edilməsi lazım olan element |
Boolean addAll (Collection c) | Göstərilən elementlərin siyahısını siyahıya əlavə edir. | c - əlavə ediləcək elementlər toplusu Qaytarma dəyəri - doğrudur |
Boolean addAll (int index, Collection c) | Göstərilən indeksdə elementlər kolleksiyası əlavə edir. İndeksdə artıq element varsa, sonradan sağa keçir | indeks - elementlərin əlavə edilməli olduğu indeks c - əlavə ediləcək elementlər toplusu Qaytarma dəyəri - Doğru |
void addFirst (e elementi) | Bağlı siyahının əvvəlinə bir element əlavə edir | e - daxil ediləcək element |
void addLast (Element e) | Siyahının sonunda bir element əlavə edir | e - daxil ediləcək element |
boşluq təmiz () | Siyahıdakı bütün elementləri təmizləyir. | |
Mantiq tərkibində (Nesne o) var | Siyahıda göstərilən elementin olub-olmadığını yoxlayır | Qaytarma dəyəri - siyahıda element varsa doğrudur |
BooleanAll (Collection c) ehtiva edir | Siyahıda kolleksiyadakı bütün elementlərin olub-olmadığını yoxlayır | Qaytarma dəyəri - siyahıda bütün elementlər varsa doğrudur |
Obyekt klonu () | LinkedListin dayaz bir nüsxəsini qaytarır | |
Iterator azalan İterator () | Tərkibindəki elementlər üzərindəki bir iteratoru tərs qaydada qaytarır | |
Obyekt elementi () | Siyahıda ilk elementi (baş) qaytarır | |
Mantiq bərabərdir (O obyekt) | Siyahıda göstərilən bütün elementləri dəqiq qaydada ehtiva etdiyini müqayisə edir | Qaytarma dəyəri - obyekt elementləri siyahı ilə uyğun gəlirsə doğrudur |
Obyekt getIndex (int indeksi) | Elementi göstərilən indeksdə alır | indeks - alınması lazım olan elementin göstəricisi Qaytarma dəyəri - Göstərilən indeksdəki element |
Obyekt getFirst () | Siyahıda ilk elementi (baş) qaytarır | |
Obyekt getLast () | Siyahıdakı son elementi (quyruğu) qaytarır | |
int indexOf (Obyekt o) | Göstərilən elementin ilk meydana çıxma indeksini götürür | o - Müəyyən ediləcək element Qaytarma dəyəri - indeks dəyəri |
Boole isEmpty () | Siyahının boş olub olmadığını yoxlayır | Qaytarma dəyəri - siyahıda dəyər yoxdursa doğrudur |
Təkrarlayıcı iterator () | Siyahının yineleyicisini ardıcıllıqla alır | Qaytarma dəyəri - təkrarlayıcı |
int lastIndexOf (Obyekt o) | Müəyyən edilmiş obyektin son hadisəsini alır | o - Müəyyən ediləcək element Qaytarma dəyəri - indeks dəyəri |
ListIterator listiterator () | Siyahıdakı elementlər üzərində təkrarlayıcı qaytarır | |
ListIterator listiterator (int index) | Göstərilən mövqedən başlayaraq siyahıdakı elementlər üzərində təkrarlayıcı qaytarır | indeks - təkrarlayıcıyı qaytarmaq üçün lazım olan başlanğıc mövqeyi. |
Mantı təklifi (Nesne e) | Elementi quyruq kimi daxil edir | e - əlavə ediləcək element |
Boolean təklifİlk (Nesne e) | Elementi siyahının ön hissəsinə daxil edir | e - əlavə ediləcək element |
Boolean təklifLast (Object e) | Elementi siyahının sonunda əlavə edir | e - əlavə ediləcək element |
Obyekt nəzərdən keçirmə () | Siyahının ilk elementini alır (baş) | Siyahı boş olduqda null qaytarır |
Obyekt peekFirst () | Siyahının ilk elementini alır (baş) | Siyahı boş olduqda null qaytarır |
Obyekt peekLast () | Siyahının son elementini alır (quyruq) | Siyahı boş olduqda null qaytarır |
Obyekt sorğusu () | Siyahının ilk elementini götürür və silir (baş) | Siyahı boş olduqda null qaytarır |
Obyekt sorğusu Birincisi () | Siyahının ilk elementini götürür və silir (baş) | Siyahı boş olduqda null qaytarır |
Obyekt sorğusu Son () | Siyahının son elementini (quyruğunu) alır və çıxarır | Siyahı boş olduqda null qaytarır |
Nesne pop () | İlk elementi siyahının yığınından alır və ya silir | |
ləğv etmə (obyekt e) | Elementi siyahının ön hissəsinə əlavə edir | e - əlavə ediləcək element |
Obyekt sil () | İlk elementi siyahıdan çıxarır | |
Obyekt sil (int indeksi) | Göstərilən indeksdəki elementi silir və qalan elementi sonradan sola aparır | indeks - elementin silinməli olduğu indeks mövqeyi Qaytarma dəyəri - Silinən element |
Mantı sil (Nesne o) | Varsa göstərilən obyektin ilk meydana çıxmasını siyahıdan silər | o - Sökülməsi lazım olan element Qaytarma dəyəri - siyahıda element varsa, doğrudur |
Boolean kaldırAll (Collection c) | Varsa kolleksiyadakı bütün elementlərin ilk meydana çıxmasını siyahıdan çıxarır | c - elementlərin toplanması Qaytarma dəyəri - siyahıda kolleksiya varsa doğrudur |
Obyekt removeFirst () | Siyahının ilk elementini silir | |
Boolean removeFirstOccurence (Object e) | Siyahıda göstərilən elementin ilk meydana çıxmasını silər | e - çıxarılacaq element |
Obyekt çıxarışLast () | Son elementi siyahıdan çıxarır | |
Boolean removeLastOccurence (Nesne e) | Göstərilən elementin son meydana gəlməsini siyahıdan silir | e - çıxarılacaq element |
Boolean tutmaAll (Collection c) | Siyahıda kolleksiyada göstərilən bütün elementləri saxlayır. Digər elementlər silinəcəkdir | c - saxlanılması lazım olan elementlər toplusu Qaytarma dəyəri - adlanan metod sayəsində siyahı dəyişsə doğrudur |
Obyekt dəsti (int index, Object o) | Müəyyən edilmiş indeksdəki elementi ötürülmüş obyekt ilə əvəz edir | o - dəyişdiriləcək element indeks - elementin indeksi Qaytarma dəyəri - Daha əvvəl göstərilən indeksdə olan elementi qaytarır |
int ölçüsü () | Siyahının ölçüsünü götürür | Qaytarma dəyəri - siyahının ölçüsü |
Siyahı alt siyahısı (int fromIndex, int toIndex) | Siyahının hissəsini start və endIndex əsas götürür | fromIndex - alt siyahının alınması lazım olan vəziyyət (daxil edilir) toIndex - alt siyahının alınacağı indeks (xaric) |
boş sort (Müqayisələndirici c) | Siyahıda olan elementləri müqayisə arqumentinə əsasən sıralayır | c - siyahı elementlərini müqayisə etmək üçün istifadə olunan kompartor |
Obyekt [] toArray () | Bir sıra elementləri müvafiq ardıcıllıqla qaytarır | Qaytarma dəyəri - Siyahıdakı bütün elementlərin düzgün ardıcıllıqla düzülməsi |
String toString () | Elementlər kolleksiyasının bir Sətir təmsilini qaytarır | Qaytarma dəyəri - Vergül və boşluqla ayrılmış və [] daxilində olan sıra elementlərinin sətri |
Java'da yeni bir LinkedList yaradın
Aşağıdakı kimi Java-da yeni bir LinkedList yarada bilərik:
LinkedList<Type> list_variable = new LinkedList<Type>();
Növü - məlumat növü siyahıda saxlamaq istədiyiniz. Məsələn: Simli, Tamsayı və s
siyahı_dəyişən - əlaqəli siyahının dəyişən adı
İndi Java LinkedList-in necə istifadə olunacağına dair müxtəlif nümunələrə baxaq metodika yuxarıda müzakirə etdiyimiz.
Misal: Elementlər yaradın və siyahıya əlavə edin
Aşağıda yeni bir LinkedList yaratmaq üçün bir nümunə verilmişdir adları və siyahıya elementlər əlavə edin. İstifadə edərək müəyyən bir indeksə bir element əlavə edə bilərik əlavə etmək metod və indeks dəyərini ötürmək üçün, istifadə edərək siyahının əvvəlinə bir element əlavə edin Əlavə et Birincisi metodunu istifadə edin və siyahının sonunda bir element əlavə edin sonSon metod. Bundan əlavə, istifadə edərək, LinkList'e elementlər toplusu əlavə edə bilərik hamısını əlavə edin metodu.
import java.util.LinkedList; public class AddListElements { public static void main(String[] args) { //Create a linked list LinkedList<String> names = new LinkedList<String>(); LinkedList<String> newnames = new LinkedList<String>(); //Add elements to the list names.add("Ramesh"); names.add("Suresh"); names.add("Ganesh"); System.out.println("List elements: " + names); //Add element to the specified index names.add(1, "Jayesh"); System.out.println("List elements after add at specified index: " + names); //Add element at the beginning of the list names.addFirst("Rupesh"); //Add element at the end of the list names.addLast("Mahesh"); System.out.println("List elements after addFirst and addLast: " + names); //Create a new collection list newnames.add("Divya"); newnames.add("Ramya"); //Add collection to the existing linked list names.addAll(newnames); System.out.println("List elements after adding collection of elements: " + names); } }
List elements: [Ramesh, Suresh, Ganesh] List elements after add at specified index: [Ramesh, Jayesh, Suresh, Ganesh] List elements after addFirst and addLast: [Rupesh, Ramesh, Jayesh, Suresh, Ganesh, Mahesh] List elements after adding collection of elements: [Rupesh, Ramesh, Jayesh, Suresh, Ganesh, Mahesh, Divya, Ramya]
Misal: Elementləri siyahıdan silin
Aşağıda LinkedList-dən elementləri silmək üçün bir nümunə var. Göstərilən indeksdəki bir elementi, ilk elementi, son elementi və siyahıdan elementlər toplusunu silə bilərik.
import java.util.LinkedList; public class RemoveListElements { public static void main(String[] args) { LinkedList<Integer> numbers = new LinkedList<Integer>(); LinkedList<Integer> num = new LinkedList<Integer>(); numbers.add(54); numbers.add(64); numbers.add(24); numbers.add(14); numbers.add(84); numbers.add(94); numbers.add(44); System.out.println("List elements: " + numbers); //Removes the head element numbers.remove(); System.out.println("List elements after remove: " + numbers); //Removes the element at the specified index numbers.remove(2); System.out.println("List elements after removing element at specified index: " + numbers); //Removes the specified element numbers.removeFirst(); System.out.println("List elements after removing the first element: " + numbers); //Removes the last element numbers.removeLast(); System.out.println("List elements after removing the last element: " + numbers); //Create a collection list num.add(12); num.add(22); numbers.addAll(num); System.out.println("List elements after adding collection: " + numbers); //Remove a collection from list numbers.removeAll(num); System.out.println("List elements after removeAll: " + numbers); } }
List elements: [54, 64, 24, 14, 84, 94, 44] List elements after remove: [64, 24, 14, 84, 94, 44] List elements after removing element at specified index: [64, 24, 84, 94, 44] List elements after removing the first element: [24, 84, 94, 44] List elements after removing the last element: [24, 84, 94] List elements after adding collection: [24, 84, 94, 12, 22] List elements after removeAll: [24, 84, 94]
Nümunə: LinkedListin digər metodları
Aşağıda Java LinkedListdəki digər faydalı metodlara bir nümunə verilmişdir. İstifadə edərək siyahının əvvəlinə bir element əlavə edə bilərik basmaq üsulunu istifadə edərək ilk elementi alın element metod. İstifadə edərək müəyyən bir indeksə əsaslanan elementi əldə edə bilərik almaq metod. İlk elementi silmək və almaq üçün pop metod. İstifadə edərək indeksə əsaslanan müəyyən bir dəyəri əvəz edə bilərik təyin etmək metodunu istifadə edərək siyahının ölçüsünü əldə edin boy metod. Bir siyahının boş olub olmadığını yoxlaya bilərik boşdur metodu.
import java.util.Deque; import java.util.LinkedList; public class LinkedListDemo { public static void main(String[] args) { LinkedList<String> cities = new LinkedList<String>(); cities.add("Chennai"); cities.add("Bangalore"); //Inserts element at the beginning cities.push("Kolkata"); System.out.println(cities); //Retrieves first element System.out.println("Output of element() method: " + cities.element()); System.out.println("Out of get method at specified index 2: " + cities.get(2)); //Retrieves and removes the first element System.out.println("Output of pop() method: " + cities.pop()); System.out.println(cities); //Check if list is empty System.out.println("Is LinkedList empty: " + cities.isEmpty()); //Replaces the element at index 1 with new value cities.set(1, "Goa"); System.out.println("List elements after using set() method: " + cities); //List size System.out.println("Size of the LinkedList: " + cities.size()); } }
[Kolkata, Chennai, Bangalore] Output of element() method: Kolkata Out of get method at specified index 2: Bangalore Output of pop() method: Kolkata [Chennai, Bangalore] Is LinkedList empty: false List elements after using set() method: [Chennai, Goa] Size of the LinkedList: 2
Nümunə: Java-da LinkedListi boşaltın və ya silin
Aşağıda, istifadə edərək LinkedListin təmizlənməsi və ya boşaldılması nümunəsidir clear()
metod. Siyahısının boş olub olmadığını yoxlaya bilərik isEmpty()
metod. Doğru qayıdırsa, siyahının boş olması deməkdir.
import java.util.LinkedList; public class ClearLinkedList { public static void main(String[] args) { LinkedList<String> l = new LinkedList<String>(); l.add("Java"); l.add("C"); l.add("C++"); System.out.println("Contents in the List: " +l); //Clear the list l.clear(); System.out.println("Is List empty: " + l.isEmpty()); System.out.println("Contents in the List: " + l); } }
Contents in the List: [Java, C, C++] Is List empty: true Contents in the List: []
Java-da bir LinkedList vasitəsilə təkrarlamaq üçün müxtəlif yollar
LinkedListdəki elementləri təkrarlamaq üçün müxtəlif yollar var. Siyahıdakı elementlərdən keçmək üçün döngə və hər bir döngə üçün istifadə edə bilərik.
Döngü üçün istifadə olunur
Aşağıdakı nümunədə, istifadə edərək siyahıda olan hər elementi təkrarlaya bilərik for
loop. İstifadə edərək dəyəri ala bilərik almaq metodu.
import java.util.LinkedList; public class LinkedListForLoop { public static void main(String[] args) { LinkedList<String> list = new LinkedList<String>(); list.add("Apple"); list.add("Banana"); list.add("Grapes"); list.add("Pear"); list.add("Papaya"); //Using for loop System.out.println("Iterate using for loop:"); for(int i=0;i<list.size();i++) System.out.println(list.get(i)); } }
Iterate using for loop: Apple Banana Grapes Pear Papaya
Hər bir döngü üçün istifadə
Aşağıda LinkedList istifadə edərək təkrarlama nümunəsi verilmişdir for-each
loop.
import java.util.LinkedList; public class LinkedListForEach { public static void main(String[] args) { LinkedList<String> list = new LinkedList<String>(); list.add("Apple"); list.add("Banana"); list.add("Grapes"); list.add("Pear"); list.add("Papaya"); //Using for each loop System.out.println("Iterate using for each loop:"); for(String fruits : list) System.out.println(fruits); } }
Iterate using for each loop: Apple Banana Grapes Pear Papaya
While loop istifadə olunur
Biz də istifadə edə bilərik while
loop aşağıdakı nümunədəki kimi LinkedListdəki elementlərdən keçmək. İstifadə boy üsulu ilə siyahı ölçüsünü alırıq və almaq üsul, fərdi elementləri ala bilərik.
import java.util.LinkedList; public class LinkedListWhileLoop { public static void main(String[] args) { LinkedList<String> list = new LinkedList<String>(); list.add("Apple"); list.add("Banana"); list.add("Grapes"); list.add("Pear"); list.add("Papaya"); System.out.println("Iterate using while loop:"); int i=0; while(i<list.size()) { System.out.println(list.get(i)); i++; } } }
Iterate using while loop: Apple Banana Grapes Pear Papaya
İterator və listiteratordan istifadə
Aşağıdakı nümunədə istifadə edirik iterator
və ListIterator
siyahıda fərdi elementlər arasında gezinmek. İstifadə sonrakı yineleyicinin metodu, siyahının sonuna çatana qədər elementləri bir-bir əldə edə bilərik. İstifadə edirik sonrakı siyahıda növbəti elementin olub olmadığını yoxlamaq üçün metod.
import java.util.Iterator; import java.util.LinkedList; import java.util.ListIterator; public class LinkedListIterator { public static void main(String[] args) { LinkedList<String> list = new LinkedList<String>(); list.add("Apple"); list.add("Banana"); list.add("Grapes"); list.add("Pear"); list.add("Papaya"); System.out.println("Iterate using iterator:"); //Using iterator Iterator<String> i = list.iterator(); while(i.hasNext()) System.out.println(i.next()); System.out.println("Iterate using listiterator:"); ListIterator<String> li = list.listIterator(); while(li.hasNext()) System.out.println(li.next()); } }
Iterate using iterator: Apple Banana Grapes Pear Papaya Iterate using listiterator: Apple Banana Grapes Pear Papaya
Deque və Queue olaraq əlaqəli siyahı
Metodlarını istifadə edə bilərik Nə haqqında və Queue interfeys, çünki LinkedList sinfi hər iki interfeysi tətbiq edir. Siyahının əvvəlinə və sonuna elementlər əlavə etmək üçün istifadə edirik Əlavə et Birincisi və sonSon metodlar. İstifadə edirik Birinci alın və sonSon ilk və son elementləri almaq metodları. Birinci və son elementi silmək üçün istifadə edirik çıxarın ilk və SonSon metodlar. İstifadə edirik səsvermə ilk elementi siyahıdan almaq və çıxarmaq üçün metod.
import java.util.Deque; import java.util.LinkedList; public class DequeLinkedList { public static void main(String[] args) { Deque<String> lang = new LinkedList<>(); lang.add("Python"); lang.add("C"); lang.add("HTML"); lang.add("Ruby"); lang.addFirst("Java"); lang.addLast("C++"); System.out.println("Elements in the list: " + lang); System.out.println("First element: " + lang.getFirst()); System.out.println("Last element: " + lang.getLast()); System.out.println("Remove first element: " + lang.removeFirst()); System.out.println("Remove last element: " + lang.removeLast()); System.out.println("List elements after removing first and last elements: " + lang); System.out.println("Head element: " + lang.peek()); System.out.println("Retrieves the first element: " + lang.peekFirst()); System.out.println("Retrieves the last element: " + lang.peekLast()); System.out.println( "Remove and returns the first element: " + lang.poll()); System.out.println("Remove and returns the first element: " + lang.pollFirst()); System.out.println("Remove and returns the last element: " + lang.pollLast()); System.out.println("List elements after poll method: " + lang); lang.offer("C#"); lang.offerFirst("Java"); lang.offerLast("C++"); System.out.println("List elements: " + lang); } }
Elements in the list: [Java, Python, C, HTML, Ruby, C++] First element: Java Last element: C++ Remove first element: Java Remove last element: C++ List elements after removing first and last elements: [Python, C, HTML, Ruby] Head element: Python Retrieves the first element: Python Retrieves the last element: Ruby Remove and returns the first element: Python Remove and returns the first element: C Remove and returns the last element: Ruby List elements after poll method: [HTML] List elements: [Java, HTML, C#, C++]
