logo

Duomenų struktūros Java

Daugybė būdų, kuriais galima tvarkyti, išsaugoti ir tvarkyti duomenis kompiuterio programoje, Java vadinami duomenų struktūromis. Šios struktūros siūlo metodinį efektyvaus duomenų tvarkymo ir valdymo metodą, leidžiantį atlikti naudingas operacijas, tokias kaip įterpimas, ištrynimas, paieška ir perkėlimas.

Straipsnyje bus nagrinėjama viskas, kas susiję su Java duomenų struktūromis, ir tai padės pradedantiesiems lengvai ir efektyviai suprasti.

  • Kas yra Java?
  • Kas yra „Java“ duomenų struktūros?
  • Duomenų struktūrų tipai Java
  • „Java“ duomenų struktūrų pranašumai
  • Duomenų struktūrų klasifikacija
  • DUK „Java“ duomenų struktūros

Kas yra Java?

Java yra populiari į objektą orientuota programavimo kalba, garsėjanti savo didžiule standartine biblioteka ir platformos laisve. Ji siūlo tvirtą architektūrą programoms, veikiančioms be perkompiliavimo įvairiose platformose, kurti. Gerai žinomoje „Java“ bibliotekoje yra įvairių įrašų sistemų, kurios leidžia efektyviai tvarkyti daugybę duomenų tipų.

Kas yra „Java“ duomenų struktūros?

Tai, kaip duomenys yra tvarkomi ir saugomi kompiuterio programos atmintyje, labai priklauso nuo „Java“ įrašų struktūrų. „Java“ gerai žinoma biblioteka apima reikšmingą integruotų statistikos struktūrų tipą. Kai kurios įrašų sistemos, leidžiančios programuotojams trumpus ir paprastus būdus išsaugoti ir tvarkyti duomenis, apima prijungtus sąrašus, krūvas, eiles ir masyvus. Kūrėjai gali greitai atlikti tokias operacijas kaip įterpimas, ištrynimas, paieška ir rūšiavimas, nes jie suteikia daugybę mechanizmų, skirtų prieigai prie duomenų gauti, keisti ir tvarkyti. „Java“ programuotojai, naudodami šias duomenų struktūras, gali sumažinti atminties naudojimą ir žymiai padidinti bendrą savo programų efektyvumą.

Duomenų struktūrų tipai Java

Žemiau pateiktas „Java“ duomenų struktūrų sąrašas

  1. Masyvai
  2. ArrayList
  3. LinkedList
  4. Stack
  5. Eilė
  6. HashMap
  7. HashSet
  8. Medžių rinkinys
  9. TreeMap
  10. Grafikas
  11. Medis

Žemiau esančioje diagramoje labai aiškiai paaiškinami „Java“ duomenų struktūrų tipai.

Duomenų struktūros Java

Tolesnė duomenų struktūrų tipų klasifikacija:

Yra dviejų tipų duomenų struktūros: -

  1. Primityvios duomenų struktūros
  2. Neprimityvios duomenų struktūros

1) Primityvios duomenų struktūros: Taip pat žinomi kaip primityvūs duomenų tipai, tai yra pagrindiniai „Java“ integruoti duomenų tipai. Jie įtraukia:

    Baitas:Išsaugo sveikuosius skaičius nuo -128 iki 127.trumpai:Išsaugo sveikuosius skaičius nuo -32 768 iki 32 767.int:Išsaugo sveikuosius skaičius nuo -2 147 483 648 iki 2 147 483 647.plūdė:Vienu tikslumu saugo slankiojo kablelio skaičius.char:Išsaugo atskirus simbolius.loginis:Išsaugo tikras arba klaidingas vertes.ilgai:Saugo didelius sveikus skaičius.Dvigubas:Išsaugo slankiojo koeficiento skaičius dvigubu tikslumu.

2) Neprimityvios duomenų struktūros: Neprimityvios įrašų struktūros yra sudėtingesnės ir susideda iš primityvių informacijos rūšių. Be to, jie gali būti suskirstyti į dvi kategorijas:

    Linijinės duomenų struktūros:Linijinėse duomenų struktūrose elementai yra išdėstyti tiesiškai arba nuosekliai. Pavyzdžiai:
      Masyvai:Identiško tipo elementų grupė, dedama į masyvą pagal iš anksto nustatytą išdėstymą.Krūvos:Struktūra „Last-In-First-Out“ (LIFO), kurioje galima pridėti arba pašalinti tik aukščiausius elementus.Uodegos:FIFO (First-In-First-Out) struktūros naudojamos eilėse, kur prekės įdedamos ant grąžinamos ir išimamos priekyje.Susietas sąrašas:Susijusį sąrašą sudaro įtaisų, vadinamų mazgais, rinkinys, kurių kiekvienas turi nuorodą į po jo esantį mazgą ir jame esančią statistiką.
    Netiesinės duomenų struktūros:Netiesinėse duomenų struktūrose elementai yra išdėstyti nenuosekliai. Pavyzdžiai:
      Medžiai:Medžiai yra tam tikro tipo mazgais pagrįsta hierarchinė struktūra, kurios viršuje yra šakninis mazgas, o iš jo išsišakoja antriniai mazgai. Pavyzdžiai: raudonai juodi medžiai, AVL medžiai, dvejetainiai paieškos medžiai ir dvejetainiai medžiai.Grafikai:Mazgų, susietų naudojant briaunas, rinkinys, kur mazgai gali turėti bet kokį jungčių skaičių. Grafikai naudojami sudėtingiems elementų santykiams simbolizuoti.Krūva:Specializuota medžiu pagrįsta struktūra, kurioje kiekvienas nustatytas mazgas turi didesnę arba mažesnę vertę nei jo antrosios pusės, atsižvelgiant į tai, ar tai didžiausia krūva, ar mažiausia krūva.Maiša:Duomenų struktūros, kurios naudoja maišos funkciją raktams susieti su reikšmėmis. Pavyzdžius sudaro maišos rinkiniai ir maišos žemėlapiai, kurie suteikia žalią statistikos gavimą ir saugojimą pagal tikslius raktus.
Duomenų struktūros Java

„Java“ duomenų struktūrų pranašumai

    Efektyvus duomenų organizavimas:Duomenų struktūros suteikia organizuotus būdus duomenims saugoti ir tvarkyti, kad būtų galima veiksmingai pasiekti, manipuliuoti ir gauti operacijas. Jie optimizuoja atminties naudojimą ir palengvina greitesnį algoritmų vykdymą.Geresnis našumas:Kūrėjai gali pagerinti našumą greičio ir atminties panaudojimo požiūriu, pasirinkdami tam tikrai veiklai tinkamą duomenų struktūrą. Našumas optimizuojamas, nes tam tikros duomenų struktūros sukurtos taip, kad puikiai atliktų tam tikrus veiksmus, pvz., ieškant, rūšiuojant ar įterpiant informaciją.Kodo pakartotinis naudojimas:„Java“ siūlo daugybę integruotų duomenų struktūrų, kurias programišiams paprasta naudoti. Šios daugkartinio naudojimo duomenų struktūros taupo laiką ir pastangas, nes nebereikia kurti sudėtingų algoritmų nuo nulio.Kodo paprastumas:Duomenų struktūros palengvina sudėtingų procesų kodavimą. Jie siūlo aukšto lygio abstrakcijas ir apima duomenų valdymo specifiką, o tai pagerina kodo skaitomumą, priežiūrą ir aiškumą.Lankstumas ir prisitaikymas:Duomenų struktūros suteikia lankstumo tvarkant įvairių tipų ir dydžių duomenis. Jie gali dinamiškai prisitaikyti, kad atitiktų kintančius duomenų reikalavimus ir sudarytų veiksmingo duomenų tvarkymo mechanizmus.Standartizuotas ir gerai patikrintas:Standartinėje Java bibliotekoje yra įmontuotų duomenų struktūrų, kurios buvo kruopščiai išbandytos ir optimizuotos, todėl užtikrinamas jų patikimumas ir našumas. Naudojant šias įprastas duomenų struktūras sumažėja klaidų tikimybė ir suteikiamas tvirtas pagrindas programų kūrimui.Mastelio keitimas:Duomenų struktūros suteikia mastelio parinktis, leidžiančias programoms efektyviai tvarkyti didelius duomenų kiekius. Jie gali dinamiškai augti arba mažėti atsižvelgiant į duomenų dydį, užtikrinant optimalų našumą net ir didėjant duomenų poreikiams.Algoritmo dizainas:Duomenų struktūros yra labai svarbios kuriant ir analizuojant algoritmus. Jie suteikia pagrindinę struktūrą ir operacijas, reikalingas įvairiems algoritmams įgyvendinti ir sudėtingoms problemoms spręsti.

1) Masyvai:

Masyvas yra pagrindinė ir dažnai naudojama duomenų struktūra Java duomenų struktūrų kontekste. Jis siūlo fiksuoto dydžio identiškų komponentų rinkinio saugojimo būdą. Kadangi jie suteikia greitą ir lengvą prieigą prie elementų, atsižvelgiant į jų indeksą, masyvai yra labai svarbus įrankis duomenims valdyti ir tvarkyti.

Privalumai:

    Duomenų organizavimas:Masyvai suteikia struktūrinį elementų saugojimo ir tvarkymo būdą, pagerindami duomenų valdymą.Atsitiktinė prieiga:Elementus galima pasiekti tiesiogiai naudojant jų indeksą, kad būtų galima efektyviai gauti ir modifikuoti.Fiksuotas dydis:Masyvai turi iš anksto nustatytą dydį, leidžiantį efektyviai paskirstyti atmintį.Homogeniniai elementai:Masyvai saugo to paties tipo elementus, užtikrindami duomenų nuoseklumą ir supaprastindami operacijas.Iteracija:Masyvai palaiko lengvą elementų kartojimą, palengvindami perėjimą ir apdorojimą.Rūšiavimas ir paieška:Masyvai gerai veikia su rūšiavimo ir paieškos algoritmais, siūlydami efektyvias operacijas.Atminties efektyvumas:Masyvai optimizuoja atminties naudojimą, saugodami elementus gretimuose regionuose.Suderinamumas:Masyvai yra plačiai palaikomi „Java“, todėl jie yra suderinami su įvairiomis sistemomis ir įrankiais.

Trūkumai:

    Fiksuotas dydis:Masyvų dydžio dinamiškai keisti negalima, todėl norint pakeisti dydį reikia atkurti.Atminties švaistymas:Nenaudojami didesnių masyvų elementai gali sukelti atminties eikvojimą.Įterpimo ir ištrynimo išlaidos:Įterpiant ar ištrinant elementus masyvo viduryje, vėlesni elementai turi būti perkelti, o tai sukelia neefektyvumą.Lankstumo trūkumas:Masyvai turi griežtus duomenų tipus ir negali talpinti skirtingų duomenų tipų be papildomų masyvų ar duomenų struktūrų.

Funkcijos:

    Masyvo kūrimas:Deklaruokite ir inicijuokite konkretaus dydžio masyvą naudodami masyvo tipą ir naują raktinį žodį.Prieiga prie elementų:Naudokite rodyklę, kad pasiektumėte atskirus masyvo elementus.Modifikuojami elementai:Atnaujinkite elemento vertę priskirdami naują reikšmę konkrečiam masyvo indeksui.Radimo ilgis:Norėdami nustatyti masyvo ilgį, naudokite ilgio atributą.Iteravimas per masyvą:Naudokite kilpas, kad pereitumėte per kiekvieną masyvo elementą ir vykdytumėte

Įgyvendinimas:

Failo pavadinimas: ArrayExample.java

 import java.util.*; public class ArrayExample { public static void main(String[] args) { int[] numbers={10,20,30,40,50}; // Initialize an array of integers System.out.println(&apos;Element at index 0:&apos;+numbers[0]); System.out.println(&apos;Element at index 2:&apos;+numbers[2]); System.out.println(&apos;Element at index 4:&apos;+numbers[4]); int sum=0; for (int i=0;i<numbers.length;i++) { sum+="numbers[i];" } system.out.println('sum of array elements:'+sum); numbers[2]="35;" update an element in the system.out.println('updated at index 2:'+numbers[2]); system.out.println('elements array:'); for (int number:numbers) system.out.println(number); < pre> <p> <strong>Output:</strong> </p> <pre> Element at index 0:10 Element at index 2:30 Element at index 4:50 Sum of array elements:150 Updated element at index 2:35 Elements in the array: 10 20 35 40 50 </pre> <h3>2) ArrayList:</h3> <p>ArrayList in Java is a dynamic data structure that allows for the storage and manipulation of elements. It is part of the Java Collections Framework and is implemented using an array internally.</p> <p> <strong>Advantages:</strong> </p> <ol class="points"> <tr><td>Dynamic Size:</td> Unlike arrays, ArrayLists can dynamically grow or shrink in size as elements are added or removed. It eliminates the need for manual resizing and allows for handling varying amounts of data conveniently. </tr><tr><td>Easy Element Manipulation:</td> ArrayLists offer methods to add, remove, and modify elements at any position within the list. Its flexibility simplifies common operations such as insertion, deletion, and updating, making element manipulation more efficient. </tr><tr><td>Random Access:</td> ArrayLists support random Access to elements using their index, enabling quick retrieval and modification of elements at specific positions within the list. It facilitates efficient element access and enhances overall performance. </tr><tr><td>Compatibility with Java Collection Framework:</td> ArrayLists implement the List interface, making them compatible with other Collection classes in the Java Collections Framework. Its compatibility allows for seamless integration with various algorithms and operations provided by the framework. </tr></ol> <p> <strong>Disadvantages:</strong> </p> <ol class="points"> <tr><td>Higher Memory Overhead:</td> ArrayLists require additional memory to maintain their internal structure, resulting in higher memory overhead compared to arrays. It can be a concern when dealing with large collections of elements. </tr><tr><td>Slower Insertion and Deletion:</td> Inserting or deleting elements in the middle of an ArrayList requires shifting elements, which can be time-consuming for large lists. In scenarios where frequent insertion or deletion operations are expected, other data structures like LinkedList may offer better performance. </tr><tr><td>Limited Performance for Search:</td> Searching for an element in an unsorted ArrayList requires iterating over the elements until a match is found. It is a linear search approach that results in slower search performance compared to data structures optimized for searching, such as HashSet or TreeMap. </tr><tr><td>No Primitive Type Support:</td> ArrayLists can only store objects and do not directly support primitive data types like int or char. To store primitive types, wrapper classes like Integer or Character need to be used, leading to potential autoboxing and unboxing overhead. </tr></ol> <p> <strong>Functions:</strong> </p> <ol class="points"> <tr><td>Creating an ArrayList:</td> Declare and initialize an ArrayList using the ArrayList class and specify the element type within the angle brackets. </tr><tr><td>Adding Elements:</td> Use the add method to append elements at the end of the ArrayList. </tr><tr><td>Accessing Elements:</td> Use the get technique to retrieve the price of detail at a selected index. </tr><tr><td>Modifying Elements:</td> Update the cost of detail at a specific index for the usage of the set approach. </tr><tr><td>Finding Size:</td> Use the dimensions method to get the cutting-edge quantity of factors in the ArrayList. </tr><tr><td>Removing Elements:</td> Use the remove approach to delete a detail at a specific index or via providing the object reference. </tr><tr><td>Iterating through the ArrayList:</td> Use loops to iterate over each element in the ArrayList and perform operations on them. </tr></ol> <p> <strong>Implementation:</strong> </p> <p> <strong>FileName:</strong> ArrayListExample.java</p> <pre> import java.util.*; public class ArrayListExample { public static void main(String[] args) { // Create an ArrayList to store integers ArrayList numbers=new ArrayList(List.of(10,20,30,40,50)); //Access and print elements from the ArrayList System.out.println(&apos;Element at index 0:&apos;+numbers.get(0)); System.out.println(&apos;Element at index 2:&apos;+numbers.get(2)); System.out.println(&apos;Element at index 4:&apos;+numbers.get(4)); // Calculate and print the sum of all elements in the ArrayList int sum=numbers.stream().mapToInt(Integer::intValue).sum(); System.out.println(&apos;Sum of ArrayList elements:&apos;+sum); // Update an element in the ArrayList numbers.set(2,35); System.out.println(&apos;Updated element at index 2:&apos;+numbers.get(2)); // Iterate through the ArrayList using a for-each loop and print the elements System.out.println(&apos;Elements in the ArrayList:&apos;); for (int number:numbers) { System.out.println(number); } } } </pre> <p> <strong>Output:</strong> </p> <pre> Element at index 0:10 Element at index 2:30 Element at index 4:50 Sum of ArrayList elements:150 Updated element at index 2:35 Elements in the ArrayList: 10 20 35 40 50 </pre> <h3>3) Linked List:</h3> <p>A linked list is a linear data structure in which elements are stored in separate objects called nodes. A reference link to the following node in the sequence is included in each node&apos;s data element. The list&apos;s final node links to null, indicating that the list has ended.</p> <p>Unlike arrays, linked lists do not require contiguous memory allocation. Each node in a linked list can be allocated independently, allowing for dynamic memory allocation and efficient insertion and deletion operations.</p> <p> <strong>Advantages:</strong> </p> <ol class="points"> <tr><td>Dynamic Size:</td> LinkedList can grow or shrink dynamically, making it suitable for varying or unknown data sizes. </tr><tr><td>Efficient Insertion and Deletion:</td> Inserting or deleting elements within a LinkedList is efficient, as it does not require shifting elements. </tr><tr><td>No Contiguous Memory Requirement:</td> LinkedList does not need contiguous memory allocation, making it flexible and suitable for unpredictable memory situations. </tr><tr><td>Easy Modification:</td> LinkedList allows easy modification of elements by changing reference pointers, enabling efficient manipulation. </tr></ol> <p> <strong>Disadvantages:</strong> </p> <ol class="points"> <tr><td>Slower Random Access:</td> LinkedList has slower random Access as it requires traversing the list to access elements by index. </tr><tr><td>Increased Memory Overhead:</td> LinkedList requires additional memory for references and nodes, increasing memory overhead compared to arrays. </tr><tr><td>Inefficient Search:</td> LinkedList has slower search operations, requiring sequential iteration to find specific elements. </tr></ol> <p> <strong>Functions:</strong> </p> <ol class="points"> <tr><td>Creating a LinkedList:</td> Declare and initialize a LinkedList using the LinkedList class. </tr><tr><td>Adding Elements:</td> Use the add method to append elements at the end of the LinkedList. </tr><tr><td>Accessing Elements:</td> Use the get method to retrieve the value of an element at a specific index. </tr><tr><td>Modifying Elements:</td> Update the value of an element at a particular index using the set method. </tr><tr><td>Removing Elements:</td> Use the remove method to delete an element at a specific index or by providing the object reference. </tr></ol> <p> <strong>Implementation:</strong> </p> <p> <strong>FileName:</strong> LinkedList1.java</p> <pre> import java.util.*; public class LinkedList1 { public static void main(String[] args) { // Create a LinkedList to store integers LinkedList linkedList1 = new LinkedList(); // Add elements to the LinkedList linkedList1.add(10); linkedList1.add(20); linkedList1.add(30); linkedList1.add(40); linkedList1.add(50); // Print the LinkedList System.out.println(&apos;LinkedList:&apos;+linkedList1); // Remove an element from the LinkedList linkedList1.removeFirst(); System.out.println(&apos;LinkedList after removing first element:&apos;+linkedList1); // Check if an element exists in the LinkedList boolean containsElement=linkedList1.contains(30); System.out.println(&apos;LinkedList contains element 30?&apos;+containsElement); // Get the first and last elements of the LinkedList int firstElement=linkedList1.getFirst(); int lastElement=linkedList1.getLast(); System.out.println(&apos;First element:&apos;+firstElement); System.out.println(&apos;Last element:&apos;+lastElement); // Clear the LinkedList linkedList1.clear(); System.out.println(&apos;LinkedList after clearing:&apos;+linkedList1); } } </pre> <p> <strong>Output:</strong> </p> <pre> LinkedList:[10, 20, 30, 40, 50] LinkedList after removing first element:[20, 30, 40, 50] LinkedList contains element 30?true First element:20 Last element:50 LinkedList after clearing:[] </pre> <h3>4) Stack:</h3> <p>The Last-In-First-Out (LIFO) principle dictates that the element that was most recently inserted is also the element that is removed first. A stack is a linear data structure that follows this rule. It employs the commands &apos;push&apos; and &apos;pop&apos; to add elements to the stack and, accordingly, remove the top element from the stack. The &apos;peek&apos; technique additionally enables Access to the top element without removing it.</p> <p> <strong>Features of a stack:</strong> </p> <ol class="points"> <tr><td>LIFO behavior:</td> The last element pushed onto the stack is the first one to be popped out, making it suitable for applications where the order of insertion and removal is important. </tr><tr><td>Limited Access:</td> Stacks typically provide restricted Access to elements. You can only access the topmost element, and to reach other elements, you need to pop the elements above them. </tr><tr><td>Dynamic size:</td> Stacks can be implemented using arrays or linked lists, allowing for a dynamic size. They can grow or shrink as needed during runtime. </tr></ol> <p> <strong>Advantages:</strong> </p> <ol class="points"> <tr><td>Simplicity:</td> Stacks are easy to understand and implement. </tr><tr><td>Efficiency:</td> Insertion and deletion operations have a time complexity of O(1). </tr><tr><td>Function call management:</td> Stacks efficiently manage function calls and variable storage. </tr><tr><td>Undo/Redo functionality:</td> Stacks enable undo and redo operations in applications. </tr></ol> <p> <strong>Disadvantages:</strong> </p> <ol class="points"> <tr><td>Limited Access:</td> Access to elements is restricted to the top of the stack. </tr><tr><td>Size restrictions:</td> Stacks may have size limitations depending on the implementation. </tr><tr><td>Not suitable for all scenarios:</td> Stacks are specific to LIFO behavior and may not be appropriate in other cases. </tr></ol> <p> <strong>Implementation:</strong> </p> <p> <strong>FileName:</strong> StackExample.java</p> <pre> import java.util.Stack; public class StackExample { public static void main(String[] args) { // Create a stack Stack stack=new Stack(); // Push elements onto the stack stack.push(10); stack.push(20); stack.push(30); // Print the top element of the stack System.out.println(&apos;Top element:&apos;+stack.peek()); // Pop elements from the stack int poppedElement=stack.pop(); System.out.println(&apos;Popped element:&apos;+poppedElement); // Check if the stack is empty System.out.println(&apos;Is stack empty?&apos;+stack.isEmpty()); // Get the size of the stack System.out.println(&apos;Stack size:&apos;+stack.size()); // Iterate over the stack System.out.println(&apos;Stack elements:&apos;); for (Integer element:stack) { System.out.println(element); } } } </pre> <p> <strong>Output:</strong> </p> <pre> Top element:30 Popped element:30 Is stack empty?false Stack size:2 Stack elements: 10 20 </pre> <h3>5) Queue:</h3> <p>A queue is a linear data structure in Java that follows the First-In-First-Out (FIFO) principle. It represents a collection of elements where elements are inserted at the rear and removed from the front.</p> <p> <strong>Features:</strong> </p> <ol class="points"> <tr><td>Enqueue:</td> Adding an element to the rear of the queue. </tr><tr><td>Dequeue:</td> Removing an element from the front of the queue. </tr><tr><td>Peek:</td> Retrieve the element at the front of the queue without removing it. </tr><tr><td>Size:</td> Determining the number of elements in the queue. </tr><tr><td>Empty Check:</td> Checking if the queue is empty. </tr></ol> <p> <strong>Advantages:</strong> </p> <ol class="points"> <tr><td>FIFO Behavior:</td> Elements are processed in the order of their insertion, ensuring the preservation of the original sequence. </tr><tr><td>Efficient Insertion and Removal:</td> Adding and removing elements from a queue is fast and has a constant time complexity of O(1). </tr><tr><td>Synchronization:</td> Java provides synchronized queue implementations, making them safe for concurrent programming. </tr><tr><td>Standardized Interface:</td> The Queue interface in Java offers a common set of methods, allowing easy interchangeability between different queue implementations. </tr></ol> <p> <strong>Disadvantages:</strong> </p> <ol class="points"> <tr><td>No Random Access:</td> Queues do not support direct Access to elements in the middle. Accessing specific positions requires dequeuing preceding elements. </tr><tr><td>Limited Size:</td> Some queue implementations have a fixed size or capacity, leading to overflow or exceptions when exceeding the maximum size. </tr><tr><td>Inefficient Search:</td> Searching for an element in a queue requires dequeuing until a match is found, resulting in a linear search with potentially high time complexity. </tr></ol> <p> <strong>Implementation:</strong> </p> <p> <strong>FileName:</strong> QueueExample.java</p> <pre> import java.util.Stack; import java.util.LinkedList; import java.util.Queue; public class QueueExample { public static void main(String[] args) { // Create a Queue to store integers Queue queue=new LinkedList(); // Enqueue elements to the Queue queue.offer(10); queue.offer(20); queue.offer(30); queue.offer(40); queue.offer(50); //Access and print the front element of the Queue System.out.println(&apos;Front element:&apos;+queue.peek()); // Dequeue elements from the Queue and print them while (!queue.isEmpty()) { int element=queue.poll(); System.out.println(&apos;Dequeued element:&apos;+element); } } } </pre> <p> <strong>Output:</strong> </p> <pre> Front element:10 Dequeued element:10 Dequeued element:20 Dequeued element:30 Dequeued element:40 Dequeued element:50 </pre> <h3>6) HashMap:</h3> <p>A HashMap is a data structure in Java that provides a way to store and retrieve key-value pairs. It is part of the Java Collections Framework and is implemented based on the hash table data structure.</p> <p> <strong>Functions:</strong> </p> <ul> <tr><td>put(key, value):</td> Inserts the specified key-value pair into the HashMap. </tr><tr><td>get(key):</td> Retrieves the value associated with the specified key. </tr><tr><td>containsKey(key):</td> Checks if the HashMap contains the specified key. </tr><tr><td>containsValue(value):</td> Checks if the HashMap contains the specified value. </tr><tr><td>remove(key):</td> Removes the key-value pair associated with the specified key from the HashMap. </tr><tr><td>size():</td> Returns the number of key-value pairs in the HashMap. </tr><tr><td>isEmpty():</td> Checks if the HashMap is empty. </tr><tr><td>keySet():</td> Returns a Set containing all the keys in the HashMap. </tr><tr><td>values():</td> Returns a Collection containing all the values in the HashMap. </tr><tr><td>clear():</td> Removes all the key-value pairs from the HashMap. </tr></ul> <p> <strong>Advantages:</strong> </p> <ol class="points"> <tr><td>Efficient Retrieval:</td> HashMap provides fast retrieval of values based on keys with constant-time complexity O(1). </tr><tr><td>Flexible Key-Value Pairing:</td> HashMap allows any non-null object as a key, enabling custom-defined keys for storing and retrieving data. </tr><tr><td>Dynamic Size:</td> HashMap can dynamically grow or shrink in size to handle varying amounts of data. </tr><tr><td>Compatibility with Java Collections Framework:</td> HashMap implements the Map interface, allowing seamless integration with other Collection classes. </tr></ol> <p> <strong>Disadvantages:</strong> </p> <ol class="points"> <tr><td>Lack of Ordering:</td> HashMap does not preserve the order of elements. Use LinkedHashMap or TreeMap for specific ordering requirements. </tr><tr><td>Increased Memory Overhead:</td> HashMap requires additional memory for hash codes and internal structure compared to simpler data structures. </tr><tr><td>Slower Iteration:</td> Iterating over a HashMap can be slower compared to arrays or lists due to traversing the underlying hash table. </tr></ol> <p> <strong>Implementation:</strong> </p> <p> <strong>FileName:</strong> HashMapExample.java</p> <pre> import java.util.HashMap; public class HashMapExample { public static void main(String[] args) { // Create a HashMap to store String keys and Integer values HashMap hashMap=new HashMap(); // Add key-value pairs to the HashMap hashMap.put(&apos;John&apos;,25); hashMap.put(&apos;Alice&apos;,30); hashMap.put(&apos;Bob&apos;,35); //Access and print values based on keys System.out.println(&apos;Age of John:&apos;+hashMap.get(&apos;John&apos;)); System.out.println(&apos;Age of Alice:&apos;+hashMap.get(&apos;Alice&apos;)); // Check if a key exists in the HashMap System.out.println(&apos;Is Bob present?&apos;+hashMap.containsKey(&apos;Bob&apos;)); // Update the value associated with a key hashMap.put(&apos;Alice&apos;,32); // Remove a key-value pair from the HashMap hashMap.remove(&apos;John&apos;); // Print all key-value pairs in the HashMap System.out.println(&apos;Key-Value pairs in the HashMap:&apos;); for (String key : hashMap.keySet()) { System.out.println(key+&apos;:&apos;+hashMap.get(key)); } // Check the size of the HashMap System.out.println(&apos;Size of the HashMap:&apos;+hashMap.size()); } } </pre> <p> <strong>Output:</strong> </p> <pre> Age of John:25 Age of Alice:30 Is Bob present?true Key-Value pairs in the HashMap: Bob:35 Alice:32 Size of the HashMap:2 </pre> <h3>7) HashSet:</h3> <p>HashSet is a data structure in Java that implements the Set interface and stores elements in a hash table.</p> <p> <strong>Features:</strong> </p> <ol class="points"> <tr><td>Stores unique elements:</td> HashSet does not allow duplicate elements. Each element in the HashSet is unique. </tr><tr><td>Uses hash-based lookup:</td> HashSet uses the hash value of each element to determine its storage location, providing efficient element retrieval. </tr><tr><td>Unordered collection:</td> The elements in a HashSet are not stored in a specific order. The order of elements may change over time. </tr></ol> <p> <strong>Advantages:</strong> </p> <ol class="points"> <tr><td>Fast element lookup:</td> HashSet provides fast lookup operations, making it efficient to check if an element exists in the set. </tr><tr><td>No duplicate elements:</td> HashSet automatically handles duplicate elements and ensures that each element is unique. </tr><tr><td>Integration with Java Collections Framework:</td> HashSet implements the Set interface, making it compatible with other collection classes in the Java Collections Framework. </tr></ol> <p> <strong>Disadvantages:</strong> </p> <ol class="points"> <tr><td>No guaranteed order:</td> HashSet does not maintain the order of elements. If the order of elements is important, HashSet is not suitable. </tr><tr><td>No indexing:</td> HashSet does not provide direct indexing or positional Access to elements. To access elements, you need to iterate over the set. </tr><tr><td>Higher memory overhead:</td> HashSet requires additional memory to store hash values and maintain the hash table structure, resulting in higher memory usage compared to some other data structures. </tr></ol> <p> <strong>Implementation:</strong> </p> <p> <strong>FileName:</strong> HashSetExample.java</p> <pre> import java.util.HashSet; public class HashSetExample { public static void main(String[] args) { // Create a HashSet HashSet set=new HashSet(); // Add elements to the HashSet set.add(&apos;Apple&apos;); set.add(&apos;Banana&apos;); set.add(&apos;Orange&apos;); set.add(&apos;Grapes&apos;); set.add(&apos;Mango&apos;); // Print the HashSet System.out.println(&apos;HashSet:&apos;+set); // Check if an element exists System.out.println(&apos;Contains &apos;Apple&apos;:&apos;+set.contains(&apos;Apple&apos;)); // Remove an element set.remove(&apos;Banana&apos;); // Print the updated HashSet System.out.println(&apos;Updated HashSet:&apos;+set); // Get the size of the HashSet System.out.println(&apos;Size of HashSet:&apos;+set.size()); // Clear the HashSet set.clear(); // Check if the HashSet is empty System.out.println(&apos;Is HashSet empty?&apos;+set.isEmpty()); } } </pre> <p> <strong>Output:</strong> </p> <pre> HashSet:[Apple, Grapes, Mango, Orange, Banana] Contains &apos;Apple&apos;:true Updated HashSet:[Apple, Grapes, Mango, Orange] Size of HashSet:4 Is HashSet empty?true </pre> <h3>8) TreeSet:</h3> <p>TreeSet is an implementation of the SortedSet interface in Java that uses a self-balancing binary search tree called a red-black tree to store elements in sorted order.</p> <p> <strong>Advantages:</strong> </p> <ol class="points"> <tr><td>Sorted Order:</td> TreeSet automatically maintains the elements in a sorted order based on their natural ordering or a custom comparator. It allows for efficient searching and retrieval of elements in ascending or descending order. </tr><tr><td>No Duplicate Elements:</td> TreeSet does not allow duplicate elements. It ensures that each element in the set is unique, which can be useful in scenarios where duplicate values should be avoided. </tr><tr><td>Efficient Operations:</td> TreeSet provides efficient operations like insertion, deletion, and searching. These operations have a time complexity of O(log n), where n is the number of elements in the set. </tr><tr><td>Navigable Set Operations:</td> TreeSet provides additional navigational methods, such as higher(), lower(), ceiling(), and floor(), which allow you to find elements that are greater than, less than, or equal to a given value. </tr></ol> <p> <strong>Disadvantages:</strong> </p> <ol class="points"> <tr><td>Overhead:</td> TreeSet requires additional memory to store the internal data structure, which can lead to higher memory overhead compared to other set implementations. </tr><tr><td>Slower Insertion and Removal:</td> Insertion and removal operations in TreeSet involve maintaining the sorted order of elements, which may require tree restructuring. It can make these operations slightly slower compared to HashSet or LinkedHashSet. </tr><tr><td>Limited Customization:</td> TreeSet is primarily designed for natural ordering or a single custom comparator. It may need more flexibility for multiple sorting criteria or complex sorting logic. </tr></ol> <p> <strong>Functions:</strong> </p> <ul> <tr><td>add(element):</td> Adds an element to the TreeSet while maintaining the sorted order. </tr><tr><td>remove(element):</td> Removes the specified element from the TreeSet. </tr><tr><td>contains(element):</td> Checks if the TreeSet contains the specified element. </tr><tr><td>size():</td> Returns the number of elements in the TreeSet. </tr><tr><td>first():</td> Returns the first (lowest) element in the TreeSet. </tr><tr><td>last():</td> Returns the last (highest) element in the TreeSet. </tr><tr><td>higher(element):</td> Returns the least element in the TreeSet that is strictly greater than the given element. </tr><tr><td>lower(element):</td> Returns the greatest element in the TreeSet that is strictly less than the given element. </tr></ul> <p> <strong>Implementation:</strong> </p> <p> <strong>FileName:</strong> TreeSetExample.java</p> <pre> import java.util.TreeSet; public class TreeSetExample { public static void main(String[] args) { // Create a TreeSet TreeSet numbers=new TreeSet(); // Add elements to the TreeSet numbers.add(5); numbers.add(2); numbers.add(8); numbers.add(1); numbers.add(4); // Print the TreeSet System.out.println(&apos;Elements in the TreeSet:&apos;+numbers); // Check if an element exists System.out.println(&apos;Does TreeSet contain 4?&apos;+numbers.contains(4)); // Remove an element numbers.remove(2); // Print the TreeSet after removal System.out.println(&apos;Elements in the TreeSet after removal:&apos;+numbers); // Get the size of the TreeSet System.out.println(&apos;Size of the TreeSet:&apos;+numbers.size()); // Get the first and last element System.out.println(&apos;First element:&apos;+numbers.first()); System.out.println(&apos;Last element:&apos;+numbers.last()); // Iterate over the TreeSet System.out.println(&apos;Iterating over the TreeSet:&apos;); for (int number:numbers) { System.out.println(number); } } } </pre> <p> <strong>Output:</strong> </p> <pre> Elements in the TreeSet:[1, 2, 4, 5, 8] Does TreeSet contain 4? true Elements in the TreeSet after removal:[1, 4, 5, 8] Size of the TreeSet:4First element:1 Last element:8 Iterating over the TreeSet: 1 4 5 8 </pre> <h3>9) TreeMap:</h3> <p>TreeMap is a class in Java that implements the Map interface and provides a sorted key-value mapping based on the natural order of the keys or a custom comparator.</p> <p> <strong>Advantages:</strong> </p> <ol class="points"> <tr><td>Sorted Ordering:</td> TreeMap maintains the keys in sorted order, which allows for efficient searching, retrieval, and range-based operations. </tr><tr><td>Key-Value Mapping:</td> TreeMap stores key-value pairs, enabling efficient lookup and retrieval of values based on the associated keys. </tr><tr><td>Red-Black Tree Implementation:</td> TreeMap uses a balanced binary search tree (Red-Black Tree) internally, ensuring efficient performance even for large datasets. </tr><tr><td>Support for Custom Comparators:</td> TreeMap allows the use of custom comparators to define the sorting order of the keys, providing flexibility in sorting criteria. </tr></ol> <p> <strong>Disadvantages:</strong> </p> <ol class="points"> <tr><td>Memory Overhead:</td> TreeMap requires additional memory to store the internal tree structure and associated objects, resulting in higher memory usage compared to simpler data structures like HashMap. </tr><tr><td>Slower Insertion and Deletion:</td> Insertion and deletion operations in TreeMap have a time complexity of O(log n) due to the need for tree restructuring, making them slower compared to HashMap or LinkedHashMap. </tr><tr><td>Limited Performance for Unsorted Data:</td> TreeMap performs efficiently for sorted data, but its performance can degrade when dealing with unsorted data or frequent modifications, as it requires maintaining the sorted order. </tr></ol> <p> <strong>Functions:</strong> </p> <ul> <tr><td>put(key, value):</td> Inserts a key-value pair into the TreeMap. </tr><tr><td>get(key):</td> Retrieves the value associated with the specified key. </tr><tr><td>containsKey(key):</td> Checks if the TreeMap contains a specific key. </tr><tr><td>remove(key):</td> Removes the key-value pair associated with the specified key. </tr><tr><td>size():</td> Returns the number of key-value pairs in the TreeMap. </tr><tr><td>keySet():</td> Returns a set of all keys in the TreeMap. </tr><tr><td>values():</td> Returns a collection of all values in the TreeMap. </tr><tr><td>entrySet():</td> Returns a set of key-value pairs in the TreeMap. </tr></ul> <p> <strong>Implementation:</strong> </p> <p> <strong>FileName:</strong> TreeMapExample.java</p> <pre> import java.util.TreeMap; public class TreeMapExample { public static void main(String[] args) { // Create a TreeMap TreeMap scores=new TreeMap(); // Insert key-value pairs into the TreeMap scores.put(&apos;Alice&apos;,90); scores.put(&apos;Bob&apos;,80); scores.put(&apos;Charlie&apos;,95); scores.put(&apos;David&apos;,87); scores.put(&apos;Eve&apos;,92); //Access and print values from the TreeMap System.out.println(&apos;Score of Alice:&apos;+scores.get(&apos;Alice&apos;)); System.out.println(&apos;Score of Charlie:&apos;+scores.get(&apos;Charlie&apos;)); System.out.println(&apos;Score of David:&apos;+scores.get(&apos;David&apos;)); // Update a value in the TreeMap scores.put(&apos;Bob&apos;,85); // Remove a key-value pair from the TreeMap scores.remove(&apos;Eve&apos;); // Iterate through the TreeMap using a for-each loop System.out.println(&apos;Scores in the TreeMap:&apos;); for (String name:scores.keySet()) { int score=scores.get(name); System.out.println(name+&apos;:&apos;+score); } } } </pre> <p> <strong>Output:</strong> </p> <pre> Score of Alice:90 Score of Charlie:95 Score of David:87 Scores in the TreeMap: Alice:90 Bob:85 Charlie:95 David:87 </pre> <h3>10) Graph:</h3> <p>Graphs are data structure that represents a collection of interconnected nodes or vertices. They are composed of vertices and edges, where vertices represent entities and edges represent the relationships between those entities.</p> <p> <strong>Advantages:</strong> </p> <ol class="points"> <tr><td>Versatility:</td> Graphs can represent a wide range of real-world scenarios, making them suitable for various applications such as social networks, transportation systems, and computer networks. </tr><tr><td>Relationship Representation:</td> Graphs provide a natural way to represent relationships and connections between entities, allowing for efficient analysis and traversal of these relationships. </tr><tr><td>Efficient Search and Traversal:</td> Graph algorithms like breadth-first search (BFS) and depth-first search (DFS) enable efficient traversal and searching of the graph&apos;s vertices and edges. </tr><tr><td>Modeling Complex Relationships:</td> Graphs can model complex relationships, including hierarchical structures, cyclic dependencies, and multiple connections between entities. </tr></ol> <p> <strong>Disadvantages:</strong> </p> <ol class="points"> <tr><td>Space Complexity:</td> Graphs can consume a significant amount of memory, especially large-scale graphs with many vertices and edges. </tr><tr><td>The complexity of Operations:</td> Certain graph operations, such as finding the shortest path or detecting cycles, can have high time complexity, particularly in dense graphs. </tr><tr><td>Difficulty in Maintenance:</td> Modifying or updating a graph can be complex, as changes in the graph&apos;s structure may impact its connectivity and existing algorithms. </tr></ol> <p> <strong>Implementation:</strong> </p> <p> <strong>FileName:</strong> GraphExample.java</p> <pre> import java.util.*; public class GraphExample { private int V; // Number of vertices private List<list> adjacencyList; // Adjacency list representation public GraphExample(int V) { this.V=V; adjacencyList=new ArrayList(V); // Initialize the adjacency list for (int i=0;i<v;i++) { adjacencylist.add(new arraylist()); } function to add an edge between two vertices public void addedge(int source,int destination) adjacencylist.get(source).add(destination); adjacencylist.get(destination).add(source); perform breadth-first search traversal of the graph bfs(int startvertex) boolean[] visited="new" boolean[v]; queue linkedlist(); visited[startvertex]="true;" queue.add(startvertex); while (!queue.isempty()) int currentvertex="queue.poll();" system.out.print(currentvertex+' '); list neighbors="adjacencyList.get(currentVertex);" for (int neighbor:neighbors) if (!visited[neighbor]) visited[neighbor]="true;" queue.add(neighbor); system.out.println(); depth-first dfs(int dfsutil(startvertex,visited); private dfsutil(int vertex,boolean[] visited) visited[vertex]="true;" system.out.print(vertex+' dfsutil(neighbor,visited); static main(string[] args) v="5;" number graphexample graphexample(v); edges graph.addedge(0,1); graph.addedge(0,2); graph.addedge(1,3); graph.addedge(2,3); graph.addedge(2,4); system.out.print('bfs traversal: graph.bfs(0); system.out.print('dfs graph.dfs(0); < pre> <p> <strong>Output:</strong> </p> <pre> BFS traversal: 0 1 2 3 4 DFS traversal: 0 1 3 2 4 </pre> <h3>11) Tree:</h3> <p>A tree is a widely used data structure in computer science that represents a hierarchical structure. It consists of nodes connected by edges, where each node can have zero or more child nodes.</p> <p> <strong>Advantages:</strong> </p> <ol class="points"> <tr><td>Hierarchical Structure:</td> Trees provide a natural way to represent hierarchical relationships, such as file systems, organization charts, or HTML/XML documents. </tr><tr><td>Efficient Search:</td> Binary search trees enable efficient searching with a time complexity of O(log n), making them suitable for storing and retrieving sorted data. </tr><tr><td>Fast Insertion and Deletion:</td> Tree data structures offer efficient insertion and deletion operations, especially when balanced, such as AVL trees or Red-Black trees. </tr><tr><td>Ordered Iteration:</td> In-order traversal of a binary search tree gives elements in a sorted order, which is helpful for tasks like printing elements in sorted order or finding the next/previous element. </tr></ol> <p> <strong>Disadvantages:</strong> </p> <ol class="points"> <tr><td>High Memory Overhead:</td> Trees require additional memory to store node references or pointers, which can result in higher memory usage compared to linear data structures like arrays or lists. </tr><tr><td>Complex Implementation:</td> Implementing and maintaining a tree data structure can be more complex compared to other data structures like arrays or lists, especially for balanced tree variants. </tr><tr><td>Limited Operations:</td> Some tree variants, like binary search trees, do not support efficient operations like finding the kth smallest element or finding the rank of an element. </tr></ol> <p> <strong>Functions:</strong> </p> <ol class="points"> <tr><td>Insertion:</td> Add a new node to the tree. </tr><tr><td>Deletion:</td> Remove a node from the tree. </tr><tr><td>Search:</td> Find a specific node or element in the tree. </tr><tr><td>Traversal:</td> Traverse the tree in different orders, such as in-order, pre-order, or post-order. </tr><tr><td>Height/Depth:</td> Calculate the height or depth of the tree. </tr><tr><td>Balance:</td> Ensure the tree remains balanced to maintain efficient operations. </tr></ol> <p> <strong>Implementation:</strong> </p> <p> <strong>FileName:</strong> TreeExample.java</p> <pre> import java.util.*; class TreeNode { int value; TreeNode left; TreeNode right; public TreeNode(int value) { this.value = value; left = null; right = null; } } public class TreeExample { public static void main(String[] args) { // Create a binary search tree TreeNode root = new TreeNode(50); root.left = new TreeNode(30); root.right = new TreeNode(70); root.left.left = new TreeNode(20); root.left.right = new TreeNode(40); root.right.left = new TreeNode(60); root.right.right = new TreeNode(80); // Perform common operations System.out.println(&apos;In-order Traversal:&apos;); inOrderTraversal(root); System.out.println(&apos;
Search for value 40: &apos;+search(root, 40)); System.out.println(&apos;Search for value 90: &apos;+search(root, 90)); int minValue = findMinValue(root); System.out.println(&apos;Minimum value in the tree: &apos;+minValue); int maxValue = findMaxValue(root); System.out.println(&apos;Maximum value in the tree: &apos;+maxValue); } // In-order traversal: left subtree, root, right subtree public static void inOrderTraversal(TreeNode node) { if (node != null) { inOrderTraversal(node.left); System.out.print(node.value + &apos; &apos;); inOrderTraversal(node.right); } } // Search for a value in the tree public static boolean search(TreeNode node, int value) { if (node == null) return false; if (node.value == value) return true; if (value <node.value) return search(node.left, value); else search(node.right, } find the minimum value in tree public static int findminvalue(treenode node) { if (node.left="=" null) node.value; findminvalue(node.left); maximum findmaxvalue(treenode (node.right="=" findmaxvalue(node.right); < pre> <p> <strong>Output:</strong> </p> <pre> In-order Traversal:20 30 40 50 60 70 80 Search for value 40: true Search for value 90: false Minimum value in the tree: 20 Maximum value in the tree: 80 </pre> <hr></node.value)></pre></v;i++)></list></pre></numbers.length;i++)>

2) ArrayList:

„Java“ „ArrayList“ yra dinamiška duomenų struktūra, leidžianti saugoti ir valdyti elementus. Tai yra „Java Collections Framework“ dalis ir įdiegta naudojant masyvą viduje.

Privalumai:

    Dinaminis dydis:Skirtingai nuo masyvų, „ArrayLists“ gali dinamiškai didėti arba mažėti, kai elementai pridedami arba pašalinami. Tai pašalina poreikį rankiniu būdu keisti dydį ir leidžia patogiai tvarkyti įvairius duomenų kiekius.Lengvas elementų manipuliavimas:ArrayLists siūlo metodus, kaip pridėti, pašalinti ir modifikuoti elementus bet kurioje sąrašo vietoje. Jo lankstumas supaprastina įprastas operacijas, tokias kaip įterpimas, ištrynimas ir atnaujinimas, todėl elementų manipuliavimas tampa efektyvesnis.Atsitiktinė prieiga:„ArrayLists“ palaiko atsitiktinę prieigą prie elementų naudojant jų indeksą, leidžiantį greitai gauti ir modifikuoti elementus konkrečiose sąrašo vietose. Tai palengvina veiksmingą prieigą prie elementų ir pagerina bendrą našumą.Suderinamumas su Java Collection Framework:„ArrayLists“ įdiegia sąrašo sąsają, todėl yra suderinama su kitomis „Java Collections Framework“ kolekcijų klasėmis. Jo suderinamumas leidžia sklandžiai integruoti su įvairiais sistemos teikiamais algoritmais ir operacijomis.

Trūkumai:

    Didesnė atmintis:„ArrayLists“ reikalauja papildomos atminties, kad išlaikytų savo vidinę struktūrą, todėl atminties sąnaudos yra didesnės, palyginti su masyvais. Tai gali kelti susirūpinimą dirbant su didelėmis elementų kolekcijomis.Lėtesnis įterpimas ir ištrynimas:Norint įterpti arba ištrinti elementus „ArrayList“ viduryje, reikia keisti elementus, o tai gali užtrukti dideliems sąrašams. Tais atvejais, kai tikimasi dažnų įterpimo ar ištrynimo operacijų, kitos duomenų struktūros, pvz., „LinkedList“, gali pasiūlyti geresnį našumą.Ribotas paieškos našumas:Ieškant elemento nerūšiuotame „ArrayList“ sąraše, reikia kartoti elementus, kol bus rasta atitiktis. Tai linijinės paieškos metodas, dėl kurio paieška yra lėtesnė, palyginti su paieškai optimizuotomis duomenų struktūromis, tokiomis kaip HashSet arba TreeMap.Nėra primityvaus tipo palaikymo:ArrayLists gali saugoti tik objektus ir tiesiogiai nepalaiko primityvių duomenų tipų, tokių kaip int arba char. Norint saugoti primityvius tipus, reikia naudoti įvyniojimo klases, pvz., sveikasis skaičius arba simbolis, todėl galimi automatinio dėžės ir išpakavimo darbai.

Funkcijos:

interneto trūkumai
    ArrayList kūrimas:Deklaruokite ir inicijuokite ArrayList naudodami ArrayList klasę ir kampiniuose skliaustuose nurodykite elemento tipą.Elementų pridėjimas:Norėdami pridėti elementus ArrayList pabaigoje, naudokite pridėjimo metodą.Prieiga prie elementų:Naudokite gavimo techniką, kad gautumėte pasirinkto indekso detalių kainą.Modifikuojami elementai:Atnaujinkite išsamios informacijos kainą konkrečiame indekse, kad galėtumėte naudoti nustatytą metodą.Radimo dydis:Naudokite matmenų metodą, kad gautumėte pažangiausią veiksnių skaičių „ArrayList“.Elementų pašalinimas:Naudokite pašalinimo metodą, kad ištrintumėte detalę tam tikrame indekse arba pateikdami objekto nuorodą.Iteravimas per ArrayList:Naudokite kilpas, kad kartotumėte kiekvieną ArrayList elementą ir atliktumėte su jais operacijas.

Įgyvendinimas:

Failo pavadinimas: ArrayListExample.java

 import java.util.*; public class ArrayListExample { public static void main(String[] args) { // Create an ArrayList to store integers ArrayList numbers=new ArrayList(List.of(10,20,30,40,50)); //Access and print elements from the ArrayList System.out.println(&apos;Element at index 0:&apos;+numbers.get(0)); System.out.println(&apos;Element at index 2:&apos;+numbers.get(2)); System.out.println(&apos;Element at index 4:&apos;+numbers.get(4)); // Calculate and print the sum of all elements in the ArrayList int sum=numbers.stream().mapToInt(Integer::intValue).sum(); System.out.println(&apos;Sum of ArrayList elements:&apos;+sum); // Update an element in the ArrayList numbers.set(2,35); System.out.println(&apos;Updated element at index 2:&apos;+numbers.get(2)); // Iterate through the ArrayList using a for-each loop and print the elements System.out.println(&apos;Elements in the ArrayList:&apos;); for (int number:numbers) { System.out.println(number); } } } 

Išvestis:

 Element at index 0:10 Element at index 2:30 Element at index 4:50 Sum of ArrayList elements:150 Updated element at index 2:35 Elements in the ArrayList: 10 20 35 40 50 

3) Susietas sąrašas:

Susietas sąrašas yra linijinė duomenų struktūra, kurioje elementai saugomi atskiruose objektuose, vadinamuose mazgais. Nuorodos nuoroda į kitą sekos mazgą įtraukta į kiekvieno mazgo duomenų elementą. Galutinis sąrašo mazgas nukreipiamas į nulį, o tai rodo, kad sąrašas baigėsi.

Skirtingai nuo masyvų, susietiems sąrašams nereikia gretimos atminties paskirstymo. Kiekvienas susieto sąrašo mazgas gali būti priskirtas atskirai, todėl galima dinamiškai paskirstyti atmintį ir veiksmingai atlikti įterpimo bei ištrynimo operacijas.

Privalumai:

    Dinaminis dydis:„LinkedList“ gali dinamiškai augti arba mažėti, todėl tinka įvairiems arba nežinomiems duomenų dydžiams.Veiksmingas įterpimas ir ištrynimas:Elementų įterpimas arba ištrynimas LinkedList yra efektyvus, nes nereikia keisti elementų.Nėra gretimos atminties reikalavimo:LinkedList nereikia gretimos atminties paskirstymo, todėl jis yra lankstus ir tinkamas nenuspėjamoms atminties situacijoms.Lengvas modifikavimas:„LinkedList“ leidžia lengvai keisti elementus keičiant atskaitos rodykles, leidžiančias efektyviai manipuliuoti.

Trūkumai:

    Lėtesnė atsitiktinė prieiga:LinkedList turi lėtesnę atsitiktinę prieigą, nes norint pasiekti elementus pagal indeksą, reikia pereiti sąrašą.Padidėjusi atmintis:„LinkedList“ reikia papildomos atminties nuorodoms ir mazgams, todėl padidėja atminties sąnaudos, palyginti su masyvais.Neefektyvi paieška:LinkedList turi lėtesnes paieškos operacijas, todėl norint rasti konkrečius elementus reikia nuoseklios iteracijos.

Funkcijos:

    LinkedList kūrimas:Deklaruokite ir inicijuokite „LinkedList“ naudodami „LinkedList“ klasę.Elementų pridėjimas:Naudokite pridėjimo metodą, kad pridėtumėte elementus LinkedList pabaigoje.Prieiga prie elementų:Norėdami gauti tam tikro indekso elemento vertę, naudokite metodą gauti.Modifikuojami elementai:Atnaujinkite elemento vertę tam tikrame indekse naudodami nustatymo metodą.Elementų pašalinimas:Naudokite pašalinimo metodą, kad ištrintumėte tam tikro indekso elementą arba nurodytumėte objekto nuorodą.

Įgyvendinimas:

Failo pavadinimas: LinkedList1.java

 import java.util.*; public class LinkedList1 { public static void main(String[] args) { // Create a LinkedList to store integers LinkedList linkedList1 = new LinkedList(); // Add elements to the LinkedList linkedList1.add(10); linkedList1.add(20); linkedList1.add(30); linkedList1.add(40); linkedList1.add(50); // Print the LinkedList System.out.println(&apos;LinkedList:&apos;+linkedList1); // Remove an element from the LinkedList linkedList1.removeFirst(); System.out.println(&apos;LinkedList after removing first element:&apos;+linkedList1); // Check if an element exists in the LinkedList boolean containsElement=linkedList1.contains(30); System.out.println(&apos;LinkedList contains element 30?&apos;+containsElement); // Get the first and last elements of the LinkedList int firstElement=linkedList1.getFirst(); int lastElement=linkedList1.getLast(); System.out.println(&apos;First element:&apos;+firstElement); System.out.println(&apos;Last element:&apos;+lastElement); // Clear the LinkedList linkedList1.clear(); System.out.println(&apos;LinkedList after clearing:&apos;+linkedList1); } } 

Išvestis:

 LinkedList:[10, 20, 30, 40, 50] LinkedList after removing first element:[20, 30, 40, 50] LinkedList contains element 30?true First element:20 Last element:50 LinkedList after clearing:[] 

4) Stack:

LIFO principas nurodo, kad paskutinis įterptas elementas taip pat pašalinamas pirmiausia. Stackas yra linijinė duomenų struktūra, kuri atitinka šią taisyklę. Jis naudoja komandas „push“ ir „pop“, kad įtrauktų elementus į krūvą ir atitinkamai pašalintų viršutinį elementą iš krūvos. „Žvilgtelėjimo“ technika papildomai leidžia pasiekti viršutinį elementą jo nepaimant.

Krūvos savybės:

    LIFO elgesys:Paskutinis elementas, įstumtas į krūvą, yra pirmasis, kuris ištraukiamas, todėl jis tinka naudoti, kai svarbi įdėjimo ir pašalinimo tvarka.Ribotas priėjimas:Stackai paprastai suteikia ribotą prieigą prie elementų. Galite pasiekti tik aukščiausią elementą, o norėdami pasiekti kitus elementus, turite iškelti elementus virš jų.Dinaminis dydis:Stackus galima įdiegti naudojant masyvus arba susietus sąrašus, leidžiančius dinamišką dydį. Veikimo metu jie gali augti arba trauktis pagal poreikį.

Privalumai:

    Paprastumas:Stackus lengva suprasti ir įgyvendinti.Efektyvumas:Įterpimo ir ištrynimo operacijų laiko sudėtingumas yra O(1).Funkcinių skambučių valdymas:Stacks efektyviai valdo funkcijų iškvietimus ir kintamą saugyklą.Anuliavimo / atkūrimo funkcija:Stacks leidžia anuliuoti ir perdaryti programas.

Trūkumai:

    Ribotas priėjimas:Prieiga prie elementų ribojama iki krūvos viršaus.Dydžio apribojimai:Priklausomai nuo diegimo, krūvos gali turėti dydžio apribojimus.Netinka visiems scenarijams:Stackai yra būdingi LIFO elgesiui ir gali būti netinkami kitais atvejais.

Įgyvendinimas:

Failo pavadinimas: StackExample.java

cm iki pėdų ir colių
 import java.util.Stack; public class StackExample { public static void main(String[] args) { // Create a stack Stack stack=new Stack(); // Push elements onto the stack stack.push(10); stack.push(20); stack.push(30); // Print the top element of the stack System.out.println(&apos;Top element:&apos;+stack.peek()); // Pop elements from the stack int poppedElement=stack.pop(); System.out.println(&apos;Popped element:&apos;+poppedElement); // Check if the stack is empty System.out.println(&apos;Is stack empty?&apos;+stack.isEmpty()); // Get the size of the stack System.out.println(&apos;Stack size:&apos;+stack.size()); // Iterate over the stack System.out.println(&apos;Stack elements:&apos;); for (Integer element:stack) { System.out.println(element); } } } 

Išvestis:

 Top element:30 Popped element:30 Is stack empty?false Stack size:2 Stack elements: 10 20 

5) Eilė:

Eilė yra linijinė Java duomenų struktūra, kuri vadovaujasi FIFO (First-In-First-Out) principu. Tai elementų rinkinys, kuriame elementai įterpiami gale ir pašalinami iš priekio.

Funkcijos:

    Eilė:Elemento įtraukimas į eilės galą.Nutraukti į eilę:Elemento pašalinimas iš eilės priekio.Žvilgtelėti:Paimkite elementą eilės priekyje jo nepašalindami.Dydis:Elementų skaičiaus eilėje nustatymas.Tuščias čekis:Tikrinama, ar eilė tuščia.

Privalumai:

    FIFO elgesys:Elementai apdorojami jų įterpimo tvarka, užtikrinant pirminės sekos išsaugojimą.Efektyvus įdėjimas ir išėmimas:Elementų įtraukimas ir pašalinimas iš eilės yra greitas ir nuolatinis O(1) sudėtingumas.Sinchronizavimas:„Java“ teikia sinchronizuotus eilių diegimus, todėl juos saugiai galima programuoti vienu metu.Standartizuota sąsaja:„Java“ eilės sąsaja siūlo bendrą metodų rinkinį, leidžiantį lengvai pakeisti skirtingus eilės diegimus.

Trūkumai:

    Nėra atsitiktinės prieigos:Eilės nepalaiko tiesioginės prieigos prie elementų viduryje. Norint pasiekti konkrečias pozicijas, reikia panaikinti ankstesnius elementus.Ribotas dydis:Kai kurių eilių diegimo dydis arba talpa yra fiksuota, todėl viršijant maksimalų dydį atsiranda perpildymo arba išimčių.Neefektyvi paieška:Ieškant elemento eilėje, reikia ištraukti iš eilės, kol randama atitiktis, todėl atliekama tiesinė paieška, kuri gali būti sudėtinga.

Įgyvendinimas:

Failo pavadinimas: EilėPavyzdys.java

 import java.util.Stack; import java.util.LinkedList; import java.util.Queue; public class QueueExample { public static void main(String[] args) { // Create a Queue to store integers Queue queue=new LinkedList(); // Enqueue elements to the Queue queue.offer(10); queue.offer(20); queue.offer(30); queue.offer(40); queue.offer(50); //Access and print the front element of the Queue System.out.println(&apos;Front element:&apos;+queue.peek()); // Dequeue elements from the Queue and print them while (!queue.isEmpty()) { int element=queue.poll(); System.out.println(&apos;Dequeued element:&apos;+element); } } } 

Išvestis:

 Front element:10 Dequeued element:10 Dequeued element:20 Dequeued element:30 Dequeued element:40 Dequeued element:50 

6) HashMap:

„HashMap“ yra „Java“ duomenų struktūra, suteikianti galimybę saugoti ir gauti raktų ir reikšmių poras. Tai yra „Java Collections Framework“ dalis ir įgyvendinama remiantis maišos lentelės duomenų struktūra.

Funkcijos:

    įdėti (raktas, vertė):Įterpia nurodytą rakto-reikšmių porą į HashMap.gauti (raktas):Nuskaito reikšmę, susietą su nurodytu raktu.includeKey(raktas):Patikrina, ar HashMap yra nurodytas raktas.includeValue(vertė):Patikrina, ar HashMap yra nurodyta reikšmė.pašalinti (raktas):Pašalina rakto-reikšmių porą, susietą su nurodytu raktu iš HashMap.dydis ():Grąžina rakto-reikšmių porų skaičių „HashMap“.Yra tuščias():Patikrina, ar HashMap tuščias.keySet():Grąžina rinkinį, kuriame yra visi raktai HashMap.reikšmės ():Grąžina kolekciją, kurioje yra visos „HashMap“ reikšmės.aišku ():Pašalina visas rakto ir verčių poras iš HashMap.

Privalumai:

    Efektyvus gavimas:„HashMap“ suteikia greitą reikšmių gavimą pagal raktus, kurių sudėtingumas yra pastovus O(1).Lankstus rakto ir vertės susiejimas:„HashMap“ leidžia naudoti bet kokį nenulinį objektą kaip raktą, įgalindamas pasirinktinai apibrėžtus raktus duomenims saugoti ir gauti.Dinaminis dydis:„HashMap“ gali dinamiškai didėti arba mažėti, kad galėtų apdoroti įvairų duomenų kiekį.Suderinamumas su „Java Collections Framework“:HashMap įgyvendina žemėlapio sąsają, leidžiančią sklandžiai integruoti su kitomis kolekcijos klasėmis.

Trūkumai:

    Trūksta užsakymo:HashMap neišsaugo elementų tvarkos. Norėdami nustatyti konkrečius užsakymo reikalavimus, naudokite „LinkedHashMap“ arba „TreeMap“.Padidėjusi atmintis:„HashMap“ reikalauja papildomos atminties maišos kodams ir vidinei struktūrai, palyginti su paprastesnėmis duomenų struktūromis.Lėtesnė iteracija:Iteravimas per HashMap gali būti lėtesnis, palyginti su masyvais ar sąrašais, nes perkeliama pagrindinė maišos lentelė.

Įgyvendinimas:

Failo pavadinimas: HashMapExample.java

 import java.util.HashMap; public class HashMapExample { public static void main(String[] args) { // Create a HashMap to store String keys and Integer values HashMap hashMap=new HashMap(); // Add key-value pairs to the HashMap hashMap.put(&apos;John&apos;,25); hashMap.put(&apos;Alice&apos;,30); hashMap.put(&apos;Bob&apos;,35); //Access and print values based on keys System.out.println(&apos;Age of John:&apos;+hashMap.get(&apos;John&apos;)); System.out.println(&apos;Age of Alice:&apos;+hashMap.get(&apos;Alice&apos;)); // Check if a key exists in the HashMap System.out.println(&apos;Is Bob present?&apos;+hashMap.containsKey(&apos;Bob&apos;)); // Update the value associated with a key hashMap.put(&apos;Alice&apos;,32); // Remove a key-value pair from the HashMap hashMap.remove(&apos;John&apos;); // Print all key-value pairs in the HashMap System.out.println(&apos;Key-Value pairs in the HashMap:&apos;); for (String key : hashMap.keySet()) { System.out.println(key+&apos;:&apos;+hashMap.get(key)); } // Check the size of the HashMap System.out.println(&apos;Size of the HashMap:&apos;+hashMap.size()); } } 

Išvestis:

 Age of John:25 Age of Alice:30 Is Bob present?true Key-Value pairs in the HashMap: Bob:35 Alice:32 Size of the HashMap:2 

7) HashSet:

„HashSet“ yra „Java“ duomenų struktūra, kuri įgyvendina „Set“ sąsają ir saugo elementus maišos lentelėje.

Funkcijos:

    Saugo unikalius elementus:HashSet neleidžia pasikartojančių elementų. Kiekvienas HashSet elementas yra unikalus.Naudoja maišą pagrįstą paiešką:„HashSet“ naudoja kiekvieno elemento maišos vertę, kad nustatytų jo saugojimo vietą, užtikrinant efektyvų elementų nuskaitymą.Neužsakyta kolekcija:HashSet elementai nėra saugomi tam tikra tvarka. Elementų tvarka laikui bėgant gali keistis.

Privalumai:

    Greita elementų paieška:„HashSet“ suteikia greitas paieškos operacijas, todėl efektyviai galima patikrinti, ar rinkinyje yra elementas.Nėra pasikartojančių elementų:HashSet automatiškai tvarko pasikartojančius elementus ir užtikrina, kad kiekvienas elementas būtų unikalus.Integracija su „Java Collections Framework“:„HashSet“ įgyvendina „Set“ sąsają, todėl ji yra suderinama su kitomis „Java Collections Framework“ rinkinių klasėmis.

Trūkumai:

pervardykite katalogą linux
    Nėra garantuoto užsakymo:HashSet nepalaiko elementų tvarkos. Jei elementų tvarka svarbi, HashSet netinka.Jokio indeksavimo:HashSet nesuteikia tiesioginio indeksavimo ar pozicinės prieigos prie elementų. Norėdami pasiekti elementus, turite kartoti rinkinį.Didesnė atmintis:„HashSet“ reikalauja papildomos atminties maišos reikšmėms saugoti ir maišos lentelės struktūrai palaikyti, todėl, palyginti su kai kuriomis kitomis duomenų struktūromis, naudojama daugiau atminties.

Įgyvendinimas:

Failo pavadinimas: HashSetExample.java

 import java.util.HashSet; public class HashSetExample { public static void main(String[] args) { // Create a HashSet HashSet set=new HashSet(); // Add elements to the HashSet set.add(&apos;Apple&apos;); set.add(&apos;Banana&apos;); set.add(&apos;Orange&apos;); set.add(&apos;Grapes&apos;); set.add(&apos;Mango&apos;); // Print the HashSet System.out.println(&apos;HashSet:&apos;+set); // Check if an element exists System.out.println(&apos;Contains &apos;Apple&apos;:&apos;+set.contains(&apos;Apple&apos;)); // Remove an element set.remove(&apos;Banana&apos;); // Print the updated HashSet System.out.println(&apos;Updated HashSet:&apos;+set); // Get the size of the HashSet System.out.println(&apos;Size of HashSet:&apos;+set.size()); // Clear the HashSet set.clear(); // Check if the HashSet is empty System.out.println(&apos;Is HashSet empty?&apos;+set.isEmpty()); } } 

Išvestis:

 HashSet:[Apple, Grapes, Mango, Orange, Banana] Contains &apos;Apple&apos;:true Updated HashSet:[Apple, Grapes, Mango, Orange] Size of HashSet:4 Is HashSet empty?true 

8) Medžių rinkinys:

„TreeSet“ yra „Java“ „SortedSet“ sąsajos įgyvendinimas, kuris naudoja savaime balansuojantį dvejetainį paieškos medį, vadinamą raudonai juodu medžiu, kad elementai būtų saugomi surūšiuota tvarka.

Privalumai:

    Rūšiuota tvarka:„TreeSet“ automatiškai palaiko elementus surūšiuota tvarka pagal jų natūralią tvarką arba pasirinktinį palyginiklį. Tai leidžia efektyviai ieškoti ir gauti elementus didėjančia arba mažėjančia tvarka.Nėra pasikartojančių elementų:TreeSet neleidžia pasikartojančių elementų. Tai užtikrina, kad kiekvienas rinkinio elementas būtų unikalus, o tai gali būti naudinga tais atvejais, kai reikėtų vengti pasikartojančių verčių.Veiksmingos operacijos:TreeSet suteikia efektyvias operacijas, tokias kaip įterpimas, trynimas ir paieška. Šių operacijų laiko sudėtingumas yra O(log n), kur n yra aibės elementų skaičius.Naršymo rinkinio operacijos:„TreeSet“ pateikia papildomus naršymo metodus, tokius kaip aukštesnis (), žemesnis (), lubos () ir grindys (), kurie leidžia rasti elementus, didesnius, mažesnius arba lygius už nurodytą reikšmę.

Trūkumai:

    Papildomos išlaidos:„TreeSet“ reikia papildomos atminties, kad būtų išsaugota vidinė duomenų struktūra, todėl gali prireikti daugiau atminties, palyginti su kitais rinkiniais.Lėtesnis įdėjimas ir išėmimas:„TreeSet“ įterpimo ir pašalinimo operacijos apima elementų rūšiavimo tvarkos palaikymą, todėl gali reikėti pertvarkyti medį. Dėl to šios operacijos gali būti šiek tiek lėtesnės, palyginti su HashSet arba LinkedHashSet.Ribotas pritaikymas:„TreeSet“ visų pirma sukurtas natūraliam užsakymui arba vienam pasirinktiniam lyginamajam įrenginiui. Gali prireikti daugiau lankstumo taikant kelis rūšiavimo kriterijus arba sudėtingą rūšiavimo logiką.

Funkcijos:

    pridėti (elementas):Prideda elementą prie „TreeSet“, išlaikant rūšiavimo tvarką.pašalinti (elementas):Pašalina nurodytą elementą iš TreeSet.yra (elementas):Patikrina, ar TreeSet yra nurodytas elementas.dydis ():Grąžina elementų skaičių TreeSet.Pirmas():Grąžina pirmąjį (žemiausią) elementą TreeSet.paskutinis ():Grąžina paskutinį (aukščiausią) elementą TreeSet.aukštesnis(elementas):Grąžina mažiausią elementą TreeSet, kuris yra griežtai didesnis už nurodytą elementą.apatinis (elementas):Grąžina didžiausią elementą TreeSet, kuris yra griežtai mažesnis už nurodytą elementą.

Įgyvendinimas:

Failo pavadinimas: TreeSetExample.java

 import java.util.TreeSet; public class TreeSetExample { public static void main(String[] args) { // Create a TreeSet TreeSet numbers=new TreeSet(); // Add elements to the TreeSet numbers.add(5); numbers.add(2); numbers.add(8); numbers.add(1); numbers.add(4); // Print the TreeSet System.out.println(&apos;Elements in the TreeSet:&apos;+numbers); // Check if an element exists System.out.println(&apos;Does TreeSet contain 4?&apos;+numbers.contains(4)); // Remove an element numbers.remove(2); // Print the TreeSet after removal System.out.println(&apos;Elements in the TreeSet after removal:&apos;+numbers); // Get the size of the TreeSet System.out.println(&apos;Size of the TreeSet:&apos;+numbers.size()); // Get the first and last element System.out.println(&apos;First element:&apos;+numbers.first()); System.out.println(&apos;Last element:&apos;+numbers.last()); // Iterate over the TreeSet System.out.println(&apos;Iterating over the TreeSet:&apos;); for (int number:numbers) { System.out.println(number); } } } 

Išvestis:

 Elements in the TreeSet:[1, 2, 4, 5, 8] Does TreeSet contain 4? true Elements in the TreeSet after removal:[1, 4, 5, 8] Size of the TreeSet:4First element:1 Last element:8 Iterating over the TreeSet: 1 4 5 8 

9) Medžio žemėlapis:

„TreeMap“ yra „Java“ klasė, kuri įgyvendina žemėlapio sąsają ir pateikia surūšiuotą rakto-reikšmių atvaizdavimą, pagrįstą natūralia raktų tvarka arba tinkintu lyginamuoju įrankiu.

Privalumai:

    Rūšiuota tvarka:„TreeMap“ palaiko raktus surūšiuota tvarka, o tai leidžia efektyviai ieškoti, gauti ir atlikti diapazonu pagrįstas operacijas.Rakto vertės atvaizdavimas:„TreeMap“ saugo raktų ir verčių poras, leidžiančias efektyviai ieškoti ir gauti reikšmes pagal susijusius raktus.Raudonai juodo medžio įgyvendinimas:„TreeMap“ viduje naudoja subalansuotą dvejetainį paieškos medį (raudoną-juodą medį), užtikrinantį efektyvų našumą net esant dideliems duomenų rinkiniams.Pasirinktinių lygintuvų palaikymas:„TreeMap“ leidžia naudoti pasirinktinius lygintuvus, kad būtų galima apibrėžti raktų rūšiavimo tvarką, suteikiant lankstumo rūšiuojant kriterijus.

Trūkumai:

    Viršutinė atmintis:„TreeMap“ reikia papildomos atminties, kad būtų galima saugoti vidinę medžio struktūrą ir susijusius objektus, todėl atminties naudojimas yra didesnis, palyginti su paprastesnėmis duomenų struktūromis, tokiomis kaip „HashMap“.Lėtesnis įterpimas ir ištrynimas:„TreeMap“ įterpimo ir ištrynimo operacijų laiko sudėtingumas yra O(log n), nes reikia pertvarkyti medį, todėl jos yra lėtesnės, palyginti su „HashMap“ arba „LinkedHashMap“.Ribotas nerūšiuotų duomenų našumas:„TreeMap“ efektyviai veikia surūšiuotus duomenis, tačiau jo našumas gali pablogėti dirbant su nerūšiuotais duomenimis arba dažnai keičiant duomenis, nes reikia išlaikyti rūšiavimo tvarką.

Funkcijos:

    įdėti (raktas, vertė):Įterpia rakto-reikšmių porą į TreeMap.gauti (raktas):Nuskaito reikšmę, susietą su nurodytu raktu.includeKey(raktas):Patikrina, ar TreeMap yra konkretus raktas.pašalinti (raktas):Pašalina rakto ir vertės porą, susietą su nurodytu raktu.dydis ():Grąžina raktų ir reikšmių porų skaičių „TreeMap“.keySet():Grąžina visų „TreeMap“ raktų rinkinį.reikšmės ():Pateikia visų TreeMap reikšmių rinkinį.entrySet():Pateikia „TreeMap“ raktų ir reikšmių porų rinkinį.

Įgyvendinimas:

Failo pavadinimas: TreeMapExample.java

 import java.util.TreeMap; public class TreeMapExample { public static void main(String[] args) { // Create a TreeMap TreeMap scores=new TreeMap(); // Insert key-value pairs into the TreeMap scores.put(&apos;Alice&apos;,90); scores.put(&apos;Bob&apos;,80); scores.put(&apos;Charlie&apos;,95); scores.put(&apos;David&apos;,87); scores.put(&apos;Eve&apos;,92); //Access and print values from the TreeMap System.out.println(&apos;Score of Alice:&apos;+scores.get(&apos;Alice&apos;)); System.out.println(&apos;Score of Charlie:&apos;+scores.get(&apos;Charlie&apos;)); System.out.println(&apos;Score of David:&apos;+scores.get(&apos;David&apos;)); // Update a value in the TreeMap scores.put(&apos;Bob&apos;,85); // Remove a key-value pair from the TreeMap scores.remove(&apos;Eve&apos;); // Iterate through the TreeMap using a for-each loop System.out.println(&apos;Scores in the TreeMap:&apos;); for (String name:scores.keySet()) { int score=scores.get(name); System.out.println(name+&apos;:&apos;+score); } } } 

Išvestis:

 Score of Alice:90 Score of Charlie:95 Score of David:87 Scores in the TreeMap: Alice:90 Bob:85 Charlie:95 David:87 

10) Grafikas:

Grafikai yra duomenų struktūra, vaizduojanti tarpusavyje sujungtų mazgų arba viršūnių rinkinį. Jie sudaryti iš viršūnių ir briaunų, kur viršūnės žymi esybes, o briaunos – ryšius tarp tų objektų.

Privalumai:

    Universalumas:Grafikai gali parodyti daugybę realaus pasaulio scenarijų, todėl jie tinka įvairioms programoms, pvz., socialiniams tinklams, transporto sistemoms ir kompiuterių tinklams.Santykių atstovavimas:Grafikai yra natūralus būdas pavaizduoti ryšius ir ryšius tarp objektų, leidžiančius efektyviai analizuoti ir apžvelgti šiuos ryšius.Veiksminga paieška ir perėjimas:Grafiko algoritmai, tokie kaip pločio paieška (BFS) ir paieška pagal gylį (DFS), leidžia efektyviai pereiti ir ieškoti grafo viršūnių ir briaunų.Sudėtingų santykių modeliavimas:Grafikai gali modeliuoti sudėtingus ryšius, įskaitant hierarchines struktūras, ciklines priklausomybes ir daugybę ryšių tarp objektų.

Trūkumai:

    Erdvės sudėtingumas:Grafikai gali užimti daug atminties, ypač didelio masto grafikai su daug viršūnių ir briaunų.Operacijų sudėtingumas:Tam tikros grafiko operacijos, pvz., trumpiausio kelio ar ciklų aptikimas, gali būti labai sudėtingos, ypač tankiuose grafikuose.Priežiūros sunkumai:Modifikuoti arba atnaujinti grafiką gali būti sudėtinga, nes grafiko struktūros pakeitimai gali turėti įtakos jo jungiamumui ir esamiems algoritmams.

Įgyvendinimas:

Failo pavadinimas: GraphExample.java

 import java.util.*; public class GraphExample { private int V; // Number of vertices private List<list> adjacencyList; // Adjacency list representation public GraphExample(int V) { this.V=V; adjacencyList=new ArrayList(V); // Initialize the adjacency list for (int i=0;i<v;i++) { adjacencylist.add(new arraylist()); } function to add an edge between two vertices public void addedge(int source,int destination) adjacencylist.get(source).add(destination); adjacencylist.get(destination).add(source); perform breadth-first search traversal of the graph bfs(int startvertex) boolean[] visited="new" boolean[v]; queue linkedlist(); visited[startvertex]="true;" queue.add(startvertex); while (!queue.isempty()) int currentvertex="queue.poll();" system.out.print(currentvertex+\' \'); list neighbors="adjacencyList.get(currentVertex);" for (int neighbor:neighbors) if (!visited[neighbor]) visited[neighbor]="true;" queue.add(neighbor); system.out.println(); depth-first dfs(int dfsutil(startvertex,visited); private dfsutil(int vertex,boolean[] visited) visited[vertex]="true;" system.out.print(vertex+\' dfsutil(neighbor,visited); static main(string[] args) v="5;" number graphexample graphexample(v); edges graph.addedge(0,1); graph.addedge(0,2); graph.addedge(1,3); graph.addedge(2,3); graph.addedge(2,4); system.out.print(\'bfs traversal: graph.bfs(0); system.out.print(\'dfs graph.dfs(0); < pre> <p> <strong>Output:</strong> </p> <pre> BFS traversal: 0 1 2 3 4 DFS traversal: 0 1 3 2 4 </pre> <h3>11) Tree:</h3> <p>A tree is a widely used data structure in computer science that represents a hierarchical structure. It consists of nodes connected by edges, where each node can have zero or more child nodes.</p> <p> <strong>Advantages:</strong> </p> <ol class="points"> <tr><td>Hierarchical Structure:</td> Trees provide a natural way to represent hierarchical relationships, such as file systems, organization charts, or HTML/XML documents. </tr><tr><td>Efficient Search:</td> Binary search trees enable efficient searching with a time complexity of O(log n), making them suitable for storing and retrieving sorted data. </tr><tr><td>Fast Insertion and Deletion:</td> Tree data structures offer efficient insertion and deletion operations, especially when balanced, such as AVL trees or Red-Black trees. </tr><tr><td>Ordered Iteration:</td> In-order traversal of a binary search tree gives elements in a sorted order, which is helpful for tasks like printing elements in sorted order or finding the next/previous element. </tr></ol> <p> <strong>Disadvantages:</strong> </p> <ol class="points"> <tr><td>High Memory Overhead:</td> Trees require additional memory to store node references or pointers, which can result in higher memory usage compared to linear data structures like arrays or lists. </tr><tr><td>Complex Implementation:</td> Implementing and maintaining a tree data structure can be more complex compared to other data structures like arrays or lists, especially for balanced tree variants. </tr><tr><td>Limited Operations:</td> Some tree variants, like binary search trees, do not support efficient operations like finding the kth smallest element or finding the rank of an element. </tr></ol> <p> <strong>Functions:</strong> </p> <ol class="points"> <tr><td>Insertion:</td> Add a new node to the tree. </tr><tr><td>Deletion:</td> Remove a node from the tree. </tr><tr><td>Search:</td> Find a specific node or element in the tree. </tr><tr><td>Traversal:</td> Traverse the tree in different orders, such as in-order, pre-order, or post-order. </tr><tr><td>Height/Depth:</td> Calculate the height or depth of the tree. </tr><tr><td>Balance:</td> Ensure the tree remains balanced to maintain efficient operations. </tr></ol> <p> <strong>Implementation:</strong> </p> <p> <strong>FileName:</strong> TreeExample.java</p> <pre> import java.util.*; class TreeNode { int value; TreeNode left; TreeNode right; public TreeNode(int value) { this.value = value; left = null; right = null; } } public class TreeExample { public static void main(String[] args) { // Create a binary search tree TreeNode root = new TreeNode(50); root.left = new TreeNode(30); root.right = new TreeNode(70); root.left.left = new TreeNode(20); root.left.right = new TreeNode(40); root.right.left = new TreeNode(60); root.right.right = new TreeNode(80); // Perform common operations System.out.println(&apos;In-order Traversal:&apos;); inOrderTraversal(root); System.out.println(&apos;
Search for value 40: &apos;+search(root, 40)); System.out.println(&apos;Search for value 90: &apos;+search(root, 90)); int minValue = findMinValue(root); System.out.println(&apos;Minimum value in the tree: &apos;+minValue); int maxValue = findMaxValue(root); System.out.println(&apos;Maximum value in the tree: &apos;+maxValue); } // In-order traversal: left subtree, root, right subtree public static void inOrderTraversal(TreeNode node) { if (node != null) { inOrderTraversal(node.left); System.out.print(node.value + &apos; &apos;); inOrderTraversal(node.right); } } // Search for a value in the tree public static boolean search(TreeNode node, int value) { if (node == null) return false; if (node.value == value) return true; if (value <node.value) return search(node.left, value); else search(node.right, } find the minimum value in tree public static int findminvalue(treenode node) { if (node.left="=" null) node.value; findminvalue(node.left); maximum findmaxvalue(treenode (node.right="=" findmaxvalue(node.right); < pre> <p> <strong>Output:</strong> </p> <pre> In-order Traversal:20 30 40 50 60 70 80 Search for value 40: true Search for value 90: false Minimum value in the tree: 20 Maximum value in the tree: 80 </pre> <hr></node.value)></pre></v;i++)></list>

11) Medis:

Medis yra kompiuterių moksle plačiai naudojama duomenų struktūra, vaizduojanti hierarchinę struktūrą. Jį sudaro briaunomis sujungti mazgai, kur kiekvienas mazgas gali turėti nulį arba daugiau antrinių mazgų.

Privalumai:

programinės įrangos testavimo tipai
    Hierarchinė struktūra:Medžiai yra natūralus būdas hierarchiniams ryšiams, pvz., failų sistemoms, organizacinėms schemoms arba HTML/XML dokumentams, pavaizduoti.Efektyvi paieška:Dvejetainiai paieškos medžiai įgalina efektyvią paiešką, kai laiko sudėtingumas yra O (log n), todėl jie yra tinkami surūšiuotiems duomenims saugoti ir gauti.Greitas įterpimas ir ištrynimas:Medžių duomenų struktūros siūlo efektyvias įterpimo ir ištrynimo operacijas, ypač kai jos subalansuotos, pvz., AVL medžiai arba raudonai juodi medžiai.Užsakyta iteracija:Dvejetainės paieškos medžio eilės tvarka pateikia elementus surūšiuota tvarka, o tai yra naudinga atliekant užduotis, pvz., spausdinant elementus surūšiuota tvarka arba ieškant kito / ankstesnio elemento.

Trūkumai:

    Didelė atminties talpa:Medžiams reikia papildomos atminties, kad būtų galima saugoti mazgų nuorodas ar rodykles, todėl atminties naudojimas gali būti didesnis, palyginti su linijinėmis duomenų struktūromis, pvz., masyvais ar sąrašais.Sudėtingas įgyvendinimas:Medžio duomenų struktūros įdiegimas ir priežiūra gali būti sudėtingiau, palyginti su kitomis duomenų struktūromis, pvz., masyvais ar sąrašais, ypač subalansuotų medžio variantų atveju.Ribotos operacijos:Kai kurie medžio variantai, pvz., dvejetainiai paieškos medžiai, nepalaiko veiksmingų operacijų, pvz., k-ojo mažiausio elemento ar elemento rango nustatymo.

Funkcijos:

    Įterpimas:Pridėkite naują mazgą prie medžio.Ištrynimas:Pašalinkite mazgą iš medžio.Paieška:Raskite konkretų mazgą ar elementą medyje.Perėjimas:Pereikite medį įvairia tvarka, pvz., užsakymo, išankstinio užsakymo arba po užsakymo.Aukštis/gylis:Apskaičiuokite medžio aukštį arba gylį.Likutis:Kad medis veiktų efektyviai, įsitikinkite, kad jis yra subalansuotas.

Įgyvendinimas:

Failo pavadinimas: TreeExample.java

 import java.util.*; class TreeNode { int value; TreeNode left; TreeNode right; public TreeNode(int value) { this.value = value; left = null; right = null; } } public class TreeExample { public static void main(String[] args) { // Create a binary search tree TreeNode root = new TreeNode(50); root.left = new TreeNode(30); root.right = new TreeNode(70); root.left.left = new TreeNode(20); root.left.right = new TreeNode(40); root.right.left = new TreeNode(60); root.right.right = new TreeNode(80); // Perform common operations System.out.println(&apos;In-order Traversal:&apos;); inOrderTraversal(root); System.out.println(&apos;
Search for value 40: &apos;+search(root, 40)); System.out.println(&apos;Search for value 90: &apos;+search(root, 90)); int minValue = findMinValue(root); System.out.println(&apos;Minimum value in the tree: &apos;+minValue); int maxValue = findMaxValue(root); System.out.println(&apos;Maximum value in the tree: &apos;+maxValue); } // In-order traversal: left subtree, root, right subtree public static void inOrderTraversal(TreeNode node) { if (node != null) { inOrderTraversal(node.left); System.out.print(node.value + &apos; &apos;); inOrderTraversal(node.right); } } // Search for a value in the tree public static boolean search(TreeNode node, int value) { if (node == null) return false; if (node.value == value) return true; if (value <node.value) return search(node.left, value); else search(node.right, } find the minimum value in tree public static int findminvalue(treenode node) { if (node.left="=" null) node.value; findminvalue(node.left); maximum findmaxvalue(treenode (node.right="=" findmaxvalue(node.right); < pre> <p> <strong>Output:</strong> </p> <pre> In-order Traversal:20 30 40 50 60 70 80 Search for value 40: true Search for value 90: false Minimum value in the tree: 20 Maximum value in the tree: 80 </pre> <hr></node.value)>