logo

Tietorakenteet Javassa

Lukuisia tapoja, joilla tietoja voidaan järjestää, tallentaa ja käsitellä tietokoneohjelmassa, kutsutaan Javassa tietorakenteiksi. Nämä rakenteet tarjoavat metodisen menetelmän tietojen tehokkaaseen käsittelyyn ja hallintaan, mikä mahdollistaa hyödylliset toiminnot, kuten lisäämisen, poistamisen, haun ja läpikäymisen.

Artikkelissa tarkastellaan kaikkea Java-tietorakenteisiin liittyvää, ja se auttaa aloittelijoita ymmärtämään helposti ja tehokkaasti.

  • Mikä on Java?
  • Mitä ovat Java-tietorakenteet?
  • Tietorakenteiden tyypit Javassa
  • Java-tietorakenteiden edut
  • Tietorakenteiden luokitus
  • Tietorakenteet Javassa usein kysytyt kysymykset

Mikä on Java?

Java on suosittu olio-ohjelmointikieli, joka tunnetaan laajasta standardikirjaston ja alustan vapaudesta. Se tarjoaa vankan arkkitehtuurin sellaisten ohjelmien luomiseen, jotka toimivat ilman uudelleenkääntämistä eri alustoilla. Tunnetussa Java-kirjastossa on valikoima tietuejärjestelmiä, joiden avulla voidaan käsitellä useita tietotyyppejä tehokkaasti.

Mitä ovat Java-tietorakenteet?

Tapa, jolla tiedot järjestetään ja tallennetaan tietokoneohjelman muistiin, riippuu tiiviisti Java-tietuerakenteista. Javan tunnettu kirjasto sisältää merkittävän tyyppisiä sisäänrakennettuja tilastorakenteita. Jotkut tietuejärjestelmistä, jotka antavat ohjelmoijille lyhyitä ja yksinkertaisia ​​tapoja tallentaa ja järjestää tietoja, sisältävät yhdistetyt luettelot, pinot, jonot ja taulukot. Kehittäjät voivat suorittaa nopeasti toimintoja, kuten lisäämisen, poistamisen, haun ja lajittelun, koska ne tarjoavat erilaisia ​​mekanismeja tietojen saamiseksi, muuttamiseen ja hallintaan. Java-ohjelmoijat voivat vähentää muistin käyttöä ja parantaa huomattavasti ohjelmiensa yleistä tehokkuutta käyttämällä näitä tietorakenteita.

Tietorakenteiden tyypit Javassa

Alla on lista Java-tietorakenteista

  1. Taulukot
  2. ArrayList
  3. LinkedList
  4. Pino
  5. Jonottaa
  6. HashMap
  7. HashSet
  8. TreeSet
  9. TreeMap
  10. Kaavio
  11. Puu

Alla oleva kaavio selittää selkeästi Java-tietorakenteiden tyypit erittäin selkeästi.

Tietorakenteet Javassa

Tietorakennetyyppien lisäluokitus:

Tietorakenteita on kahdenlaisia: -

  1. Primitiiviset tietorakenteet
  2. Ei-primitiiviset tietorakenteet

1) Primitiiviset tietorakenteet: Nämä tunnetaan myös primitiivisinä tietotyypeinä, ja ne ovat Javassa sisäänrakennettuja perustietotyyppejä. Ne sisältävät:

    Tavu:Tallentaa kokonaislukuja -128:sta 127:ään.lyhyt:Tallentaa kokonaislukuja -32 768 - 32 767.int:Tallentaa kokonaislukuja välillä -2 147 483 648 - 2 147 483 647.kellua:Tallentaa liukulukuluvut yhdellä tarkkuudella.hiiltyä:Tallentaa yksittäisiä merkkejä.boolean:Tallentaa oikeita tai vääriä arvoja.pitkä:Tallentaa suuria kokonaislukuja.Kaksinkertainen:Tallentaa kelluvat kertoimet kaksinkertaisella tarkkuudella.

2) Ei-primitiiviset tietorakenteet: Ei-primitiiviset tietuerakenteet ovat monimutkaisempia ja koostuvat primitiivisistä tietolajeista. Ne voidaan lisäksi luokitella kahteen luokkaan:

    Lineaariset tietorakenteet:Lineaarisissa tietorakenteissa elementit on järjestetty lineaarisesti tai peräkkäin. Esimerkkejä:
      Taulukot:Ryhmä identtisiä elementtejä, jotka on sijoitettu taulukkoon ennalta määrätyn järjestelyn mukaisesti.Pinot:Last-In-First-Out (LIFO) -rakenne, jossa vain ylimmät kohteet voidaan lisätä tai poistaa.Hännät:FIFO (First-In-First-Out) -rakenteita hyödynnetään jonoissa, joissa tavarat lisätään palautettavan päälle ja otetaan pois etupuolelta.Linkitetty lista:Aiheeseen liittyvä luettelo sisältää kokoelman solmuiksi kutsuttuja gadgeteja, joista jokaisessa on viittaus perässä olevaan solmuun ja sen sisällä tilastot.
    Epälineaariset tietorakenteet:Epälineaarisissa tietorakenteissa elementit on järjestetty ei-peräkkäin. Esimerkkejä:
      Puut:Puut ovat eräänlainen solmupohjainen hierarkkinen rakenne, jonka yläosassa on juurisolmu ja siitä haaroittuvat alisolmut. Esimerkkejä ovat punamustat puut, AVL-puut, binäärihakupuut ja binääripuut.Kaaviot:Joukko solmuja, jotka on linkitetty käyttämällä reunoja, jolloin solmuilla voi olla mikä tahansa määrä yhteyksiä. Kaavioita käytetään symboloimaan kohteiden välisiä monimutkaisia ​​suhteita.Pino:Erikoistunut puupohjainen rakenne, jossa jokaisella määritetyllä solmulla on suurempi tai pienempi arvo kuin sen lapsia, riippuen siitä, onko se maksimi- vai minimikasa vai ei.Hash:Tietorakenteet, jotka yhdistävät avaimet arvoihin hash-funktiolla. Esimerkkejä ovat hash-joukot ja hash-kartat, jotka tarjoavat vihreän haun ja tilastojen tallennuksen tarkkojen avainten perusteella.
Tietorakenteet Javassa

Java-tietorakenteiden edut

    Tehokas tietojen organisointi:Tietorakenteet tarjoavat organisoituja tapoja tallentaa ja hallita tietoja, mikä mahdollistaa tehokkaat pääsy-, käsittely- ja hakutoiminnot. Ne optimoivat muistin käytön ja helpottavat algoritmien nopeampaa suorittamista.Parempi suorituskyky:Kehittäjät voivat parantaa suorituskykyä nopeuden ja muistin käytön suhteen valitsemalla tietylle toiminnalle sopivan tietorakenteen. Suorituskyky on optimoitu, koska tietyt tietorakenteet on tehty loistamaan tietyissä toimissa, kuten tietojen etsimisessä, lajittelussa tai lisäämisessä.Koodin uudelleenkäytettävyys:Java tarjoaa laajan valikoiman sisäänrakennettuja tietorakenteita, joita ohjelmoijien on helppo käyttää. Nämä uudelleen käytettävät tietorakenteet säästävät aikaa ja vaivaa poistamalla tarpeen luoda kehittyneitä algoritmeja tyhjästä.Koodin yksinkertaisuus:Tietorakenteet tekevät monimutkaisten prosessien toteuttamisesta yksinkertaisempaa koodattavaa. Ne tarjoavat korkean tason abstraktioita ja kapseloivat tiedonhallinnan erityispiirteet, mikä parantaa koodin luettavuutta, ylläpidettävyyttä ja selkeyttä.Joustavuus ja mukautuvuus:Tietorakenteet tarjoavat joustavuutta erityyppisten ja -kokoisten tietojen käsittelyssä. Ne voivat mukautua dynaamisesti muuttuviin tietovaatimuksiin ja tarjota mekanismeja tehokkaaseen tietojenkäsittelyyn.Standardoitu ja hyvin testattu:Java-standardikirjasto sisältää sisäänrakennettuja tietorakenteita, jotka on testattu ja optimoitu merkittävästi, mikä takaa niiden luotettavuuden ja suorituskyvyn. Näiden yleisten tietorakenteiden hyödyntäminen vähentää virheiden mahdollisuutta ja antaa sovelluskehitykseen vankan perustan.Skaalautuvuus:Tietorakenteet tarjoavat skaalautuvuusvaihtoehtoja, joiden avulla sovellukset voivat käsitellä suuria tietomääriä tehokkaasti. Ne voivat kasvaa tai kutistua dynaamisesti datakoon perusteella, mikä varmistaa optimaalisen suorituskyvyn jopa kasvavien tietotarpeiden kanssa.Algoritmin suunnittelu:Tietorakenteet ovat ratkaisevia algoritmien suunnittelussa ja analysoinnissa. Ne tarjoavat taustalla olevan rakenteen ja toiminnot, joita tarvitaan erilaisten algoritmien toteuttamiseen ja monimutkaisten ongelmien ratkaisemiseen.

1) Taulukot:

Taulukko on perustietorakenne, jota käytetään usein Javan tietorakenteiden yhteydessä. Se tarjoaa menetelmän tallentaa kiinteäkokoinen kokoelma identtisiä komponentteja. Koska taulukot tarjoavat nopean ja helpon pääsyn elementteihin niiden indeksistä riippuen, ne ovat tärkeä työkalu tietojen hallinnassa ja järjestämisessä.

Edut:

    Tietojen organisaatio:Taulukot tarjoavat jäsennellyn tavan tallentaa ja järjestää elementtejä, mikä parantaa tiedonhallintaa.Random Access:Elementteihin pääsee suoraan niiden hakemiston avulla, mikä mahdollistaa tehokkaan haun ja muokkaamisen.Kiinteä koko:Matriiseilla on ennalta määrätty koko, mikä mahdollistaa tehokkaan muistin allokoinnin.Homogeeniset elementit:Taulukot tallentavat samantyyppisiä elementtejä, mikä varmistaa tietojen johdonmukaisuuden ja yksinkertaistaa toimintaa.Iterointi:Taulukot tukevat helppoa iterointia elementtien läpi, mikä helpottaa läpikulkua ja käsittelyä.Lajittelu ja haku:Taulukot toimivat hyvin lajittelu- ja hakualgoritmien kanssa ja tarjoavat tehokkaan toiminnan.Muistin tehokkuus:Taulukot optimoivat muistin käytön tallentamalla elementtejä vierekkäisille alueille.Yhteensopivuus:Javalla tuetaan laajasti taulukoita, joten ne ovat yhteensopivia eri kehysten ja työkalujen kanssa.

Haitat:

    Kiinteä koko:Taulukon kokoa ei voi muuttaa dynaamisesti, joten kokoa voidaan muuttaa uudelleen.Muistin hukka:Käyttämättömät elementit suuremmissa taulukoissa voivat johtaa muistin hukkaan.Lisäys- ja poistokustannukset:Elementtien lisääminen tai poistaminen taulukon keskelle edellyttää seuraavien elementtien siirtämistä, mikä johtaa tehottomuuteen.Joustavuuden puute:Matriiseilla on jäykkiä tietotyyppejä, eivätkä ne voi majoittaa erilaisia ​​tietotyyppejä ilman lisätaulukoita tai tietorakenteita.

Toiminnot:

    Taulukon luominen:Määritä ja alusta tietyn kokoinen taulukko käyttämällä taulukkotyyppiä ja uutta avainsanaa.Elementtien käyttö:Käytä hakemistoa päästäksesi taulukon yksittäisiin elementteihin.Elementtien muokkaaminen:Päivitä elementin arvo määrittämällä uusi arvo tietylle taulukon indeksille.Etsinnän pituus:Käytä pituusmääritettä määrittääksesi taulukon pituuden.Iterointi taulukon kautta:Käytä silmukoita käydäksesi läpi jokaisen taulukon elementin ja suorittaaksesi sen

Toteutus:

Tiedoston nimi: 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:

ArrayList Javassa on dynaaminen tietorakenne, joka mahdollistaa elementtien tallentamisen ja manipuloinnin. Se on osa Java Collections Frameworkia, ja se on toteutettu sisäisellä taulukolla.

Edut:

    Dynaaminen koko:Toisin kuin taulukot, ArrayLists voivat kasvaa tai pienentyä dynaamisesti, kun elementtejä lisätään tai poistetaan. Se eliminoi manuaalisen koon muuttamisen tarpeen ja mahdollistaa erilaisten tietomäärien kätevän käsittelyn.Helppo elementtien käsittely:ArrayLists tarjoaa menetelmiä elementtien lisäämiseen, poistamiseen ja muokkaamiseen missä tahansa luettelon kohdassa. Sen joustavuus yksinkertaistaa yleisiä toimintoja, kuten lisäämistä, poistamista ja päivitystä, mikä tekee elementtien käsittelystä tehokkaampaa.Random Access:ArrayLists tukevat satunnaista pääsyä elementteihin hakemistonsa avulla, mikä mahdollistaa elementtien nopean haun ja muokkaamisen tietyissä luettelon kohdissa. Se helpottaa tehokasta pääsyä elementteihin ja parantaa yleistä suorituskykyä.Yhteensopivuus Java Collection Frameworkin kanssa:ArrayLists toteuttaa List-rajapinnan, mikä tekee niistä yhteensopivia muiden kokoelmaluokkien kanssa Java Collections Frameworkissa. Sen yhteensopivuus mahdollistaa saumattoman integroinnin kehyksen tarjoamien eri algoritmien ja toimintojen kanssa.

Haitat:

    Lisää muistia:ArrayLists vaativat lisämuistia säilyttääkseen sisäisen rakenteensa, mikä johtaa korkeampiin muistiin verrattuna taulukoihin. Se voi olla huolenaihe, kun käsitellään suuria elementtikokoelmia.Hitaampi lisäys ja poistaminen:Elementtien lisääminen tai poistaminen ArrayListin keskelle vaatii elementtien siirtämistä, mikä voi olla aikaavievää suurilla listoilla. Skenaarioissa, joissa on odotettavissa toistuvia lisäys- tai poistotoimintoja, muut tietorakenteet, kuten LinkedList, voivat tarjota paremman suorituskyvyn.Rajoitettu hakutulos:Elementin etsiminen lajittelemattomasta ArrayList-luettelosta edellyttää elementtien iterointia, kunnes vastaavuus löytyy. Se on lineaarinen hakutapa, joka johtaa hitaampaan hakutulokseen verrattuna hakuun optimoituihin tietorakenteisiin, kuten HashSet tai TreeMap.Ei primitiivityypin tukea:ArrayLists voi tallentaa vain objekteja, eivätkä ne tue suoraan primitiivisiä tietotyyppejä, kuten int tai char. Primitiivisten tyyppien tallentamiseksi on käytettävä kääreluokkia, kuten Integer tai Character, mikä johtaa mahdolliseen automaattiseen pakkaukseen ja pakkauksen purkamiseen.

Toiminnot:

sql-palvelimen pivot
    ArrayListin luominen:Ilmoita ja alusta ArrayList käyttämällä ArrayList-luokkaa ja määritä elementtityyppi kulmasuluissa.Elementtien lisääminen:Käytä add-menetelmää elementtien liittämiseen ArrayListin loppuun.Elementtien käyttö:Käytä hakutekniikkaa hakeaksesi yksityiskohtien hinnan valitusta indeksistä.Elementtien muokkaaminen:Päivitä yksityiskohtien hinta tietyssä indeksissä asetettua lähestymistapaa varten.Hakukoko:Käytä dimensions-menetelmää saadaksesi huippuluokan tekijöitä ArrayListissä.Elementtien poistaminen:Käytä poistotapaa poistaaksesi yksityiskohdan tietystä hakemistosta tai antamalla objektiviittauksen.Iterointi ArrayListin kautta:Käytä silmukoita iteroidaksesi jokaisen ArrayList-elementin yli ja suorittaaksesi niille toimintoja.

Toteutus:

Tiedoston nimi: 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); } } } 

Lähtö:

 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) Linkitetty luettelo:

Linkitetty lista on lineaarinen tietorakenne, jossa elementit on tallennettu erillisiin objekteihin, joita kutsutaan solmuiksi. Viitelinkki sekvenssin seuraavaan solmuun sisältyy kunkin solmun tietoelementtiin. Listan viimeinen solmu linkittyy nulliin, mikä osoittaa, että luettelo on päättynyt.

Toisin kuin taulukot, linkitetyt luettelot eivät vaadi jatkuvaa muistin varausta. Jokainen linkitetyn luettelon solmu voidaan allokoida itsenäisesti, mikä mahdollistaa dynaamisen muistin allokoinnin ja tehokkaat lisäys- ja poistotoiminnot.

Edut:

    Dynaaminen koko:LinkedList voi kasvaa tai pienentyä dynaamisesti, mikä tekee siitä sopivan vaihteleville tai tuntemattomille datakokoille.Tehokas lisäys ja poistaminen:Elementtien lisääminen tai poistaminen LinkedListissä on tehokasta, koska se ei vaadi elementtien siirtämistä.Ei jatkuvaa muistivaatimusta:LinkedList ei tarvitse jatkuvaa muistin varausta, mikä tekee siitä joustavan ja sopivan arvaamattomiin muistitilanteisiin.Helppo muokkaus:LinkedList mahdollistaa elementtien helpon muokkaamisen vaihtamalla viiteosoittimia, mikä mahdollistaa tehokkaan manipuloinnin.

Haitat:

    Hitaampi Random Access:LinkedListillä on hitaampi satunnaiskäyttö, koska se vaatii luettelon läpikulkua elementtien käyttämiseksi indeksin mukaan.Lisääntynyt muistin määrä:LinkedList vaatii lisämuistia viittauksille ja solmuille, mikä lisää muistia taulukoihin verrattuna.Tehoton haku:LinkedListillä on hitaammat hakutoiminnot, mikä vaatii peräkkäistä iterointia tiettyjen elementtien löytämiseksi.

Toiminnot:

    LinkedListin luominen:Ilmoita ja alusta LinkedList LinkedList-luokan avulla.Elementtien lisääminen:Käytä add-menetelmää elementtien liittämiseen LinkedList-luettelon loppuun.Elementtien käyttö:Käytä get-menetelmää tietyn indeksin elementin arvon hakemiseen.Elementtien muokkaaminen:Päivitä tietyn indeksin elementin arvo set-menetelmällä.Elementtien poistaminen:Käytä poistomenetelmää tietyn hakemiston elementin poistamiseen tai antamalla objektiviittaus.

Toteutus:

Tiedoston nimi: 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); } } 

Lähtö:

 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) Pino:

Last-In-First-Out (LIFO) -periaate määrää, että viimeksi lisätty elementti poistetaan myös ensimmäisenä. Pino on lineaarinen tietorakenne, joka noudattaa tätä sääntöä. Se käyttää komentoja 'push' ja 'pop' lisätäkseen elementtejä pinoon ja vastaavasti poistaakseen ylimmän elementin pinosta. 'Peek'-tekniikka mahdollistaa lisäksi pääsyn yläelementtiin poistamatta sitä.

Pinon ominaisuudet:

terävä kulma
    LIFO-käyttäytyminen:Viimeinen pinoon työnnetty elementti ponnahtaa ulos ensimmäisenä, joten se sopii sovelluksiin, joissa asettamisen ja poistamisen järjestys on tärkeä.Rajoitettu pääsy:Pinot tarjoavat yleensä rajoitetun pääsyn elementteihin. Pääset vain ylimpään elementtiin, ja päästäksesi muihin elementteihin, sinun on nostettava elementit niiden yläpuolelle.Dynaaminen koko:Pinot voidaan toteuttaa käyttämällä taulukoita tai linkitettyjä listoja, mikä mahdollistaa dynaamisen koon. Ne voivat kasvaa tai kutistua tarpeen mukaan ajon aikana.

Edut:

    Yksinkertaisuus:Pinot on helppo ymmärtää ja toteuttaa.Tehokkuus:Lisäys- ja poistotoimintojen aikamonimutkaisuus on O(1).Toimintopuhelun hallinta:Pinot hallitsevat tehokkaasti funktiokutsuja ja muuttujan tallennusta.Kumoa/Toista-toiminto:Pinot mahdollistavat sovellusten kumoamisen ja uudelleen tekemisen.

Haitat:

    Rajoitettu pääsy:Pääsy elementteihin on rajoitettu pinon yläosaan.Kokorajoitukset:Pinoilla voi olla kokorajoituksia toteutuksesta riippuen.Ei sovellu kaikkiin skenaarioihin:Pinot ovat ominaisia ​​LIFO-käyttäytymiselle, eivätkä ne välttämättä sovellu muissa tapauksissa.

Toteutus:

Tiedoston nimi: StackExample.java

 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); } } } 

Lähtö:

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

5) Jono:

Jono on Java-kielinen lineaarinen tietorakenne, joka noudattaa FIFO-periaatetta (First-In-First Out). Se edustaa kokoelmaa elementtejä, joissa elementit asetetaan taakse ja poistetaan edestä.

Ominaisuudet:

    Jono:Elementin lisääminen jonon takaosaan.Poistaa jonosta:Elementin poistaminen jonon etuosasta.Kurkistaa:Hae jonon etuosassa oleva elementti poistamatta sitä.Koko:Jonon elementtien lukumäärän määrittäminen.Tyhjä sekki:Tarkistaa, onko jono tyhjä.

Edut:

    FIFO-käyttäytyminen:Elementit käsitellään niiden lisäysjärjestyksessä, mikä varmistaa alkuperäisen sekvenssin säilymisen.Tehokas asennus ja poisto:Elementtien lisääminen ja poistaminen jonosta on nopeaa ja sen aikamonimutkaisuus on vakio O(1).Synkronointi:Java tarjoaa synkronoidut jonototeutukset, mikä tekee niistä turvallisia samanaikaiseen ohjelmointiin.Standardoitu käyttöliittymä:Javan Queue-rajapinta tarjoaa yleiset menetelmät, jotka mahdollistavat helpon vaihdettavuuden erilaisten jonototeutusten välillä.

Haitat:

    Ei Random Accessia:Jonot eivät tue suoraa pääsyä keskellä oleviin elementteihin. Tiettyihin paikkoihin pääsy edellyttää edeltävien elementtien poistamista jonosta.Rajoitettu koko:Joillakin jonototeutuksilla on kiinteä koko tai kapasiteetti, mikä johtaa ylivuotoon tai poikkeuksiin, kun enimmäiskoko ylitetään.Tehoton haku:Jonon elementin etsiminen edellyttää jonon purkamista, kunnes vastaavuus löytyy, mikä johtaa lineaariseen hakuun, joka voi olla aika monimutkainen.

Toteutus:

Tiedoston nimi: QueueExample.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); } } } 

Lähtö:

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

6) HashMap:

HashMap on Java-tietorakenne, joka tarjoaa tavan tallentaa ja noutaa avainarvopareja. Se on osa Java Collections Frameworkia ja se on toteutettu hash-taulukon tietorakenteen perusteella.

Toiminnot:

    put(avain, arvo):Lisää määritetyn avain-arvo-parin HashMapiin.hanki (avain):Hakee määritettyyn avaimeen liittyvän arvon.sisältääKey(avain):Tarkistaa, sisältääkö HashMap määritetyn avaimen.sisältääArvo(arvo):Tarkistaa, sisältääkö HashMap määritetyn arvon.poista (avain):Poistaa määritettyyn avaimeen liittyvän avain-arvo-parin HashMapista.koko():Palauttaa avainarvoparien määrän HashMapissa.on tyhjä():Tarkistaa, onko HashMap tyhjä.keySet():Palauttaa joukon, joka sisältää kaikki HashMapin avaimet.arvot():Palauttaa kokoelman, joka sisältää kaikki HashMapin arvot.asia selvä():Poistaa kaikki avain-arvo-parit HashMapista.

Edut:

    Tehokas haku:HashMap tarjoaa nopean arvojen haun, jotka perustuvat avaimiin, joiden monimutkaisuus on vakioaika O(1).Joustava avainarvopari:HashMap sallii minkä tahansa ei-null-objektin avaimena, mikä mahdollistaa mukautetut avaimet tietojen tallentamiseen ja hakemiseen.Dynaaminen koko:HashMap voi dynaamisesti kasvaa tai pienentää kokoaan käsitelläkseen erilaisia ​​tietomääriä.Yhteensopivuus Java Collections Frameworkin kanssa:HashMap toteuttaa Map-rajapinnan, mikä mahdollistaa saumattoman integroinnin muiden Collection-luokkien kanssa.

Haitat:

    Tilauksen puute:HashMap ei säilytä elementtien järjestystä. Käytä LinkedHashMapia tai TreeMapia erityisiin tilausvaatimuksiin.Lisääntynyt muistin määrä:HashMap vaatii lisämuistia hash-koodeille ja sisäiselle rakenteelle verrattuna yksinkertaisempiin tietorakenteisiin.Hitaampi iteraatio:HashMapin iterointi voi olla hitaampaa verrattuna taulukoihin tai luetteloihin, koska se kulkee taustalla olevan hash-taulukon läpi.

Toteutus:

Tiedoston nimi: 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()); } } 

Lähtö:

 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 on Java-tietorakenne, joka toteuttaa Set-rajapinnan ja tallentaa elementit hash-taulukkoon.

Ominaisuudet:

    Tallentaa ainutlaatuisia elementtejä:HashSet ei salli päällekkäisiä elementtejä. Jokainen HashSetin elementti on ainutlaatuinen.Käyttää hash-pohjaista hakua:HashSet käyttää kunkin elementin hajautusarvoa määrittääkseen sen tallennuspaikan, mikä tarjoaa tehokkaan elementin haun.Tilaamaton kokoelma:HashSetin elementtejä ei tallenneta tietyssä järjestyksessä. Elementtien järjestys voi muuttua ajan myötä.

Edut:

    Nopea elementtihaku:HashSet tarjoaa nopeat hakutoiminnot, mikä tekee tehokkaasta tarkistaa, onko joukossa elementtiä.Ei päällekkäisiä elementtejä:HashSet käsittelee automaattisesti päällekkäisiä elementtejä ja varmistaa, että jokainen elementti on ainutlaatuinen.Integrointi Java Collections Frameworkiin:HashSet toteuttaa Set-rajapinnan, mikä tekee siitä yhteensopivan muiden Java Collections Frameworkin kokoelmaluokkien kanssa.

Haitat:

java haihtuva avainsana
    Ei taattua tilausta:HashSet ei ylläpidä elementtien järjestystä. Jos elementtien järjestys on tärkeä, HashSet ei sovellu.Ei indeksointia:HashSet ei tarjoa suoraa indeksointia tai sijaintikohtaista pääsyä elementteihin. Jotta pääset käyttämään elementtejä, sinun on iteroitava joukon yli.Suurempi muisti:HashSet vaatii lisämuistia hash-arvojen tallentamiseen ja hash-taulukon rakenteen ylläpitämiseen, mikä johtaa korkeampaan muistin käyttöön verrattuna joihinkin muihin tietorakenteisiin.

Toteutus:

Tiedoston nimi: 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()); } } 

Lähtö:

 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) TreeSet:

TreeSet on Javan SortedSet-käyttöliittymän toteutus, joka käyttää itsetasapainottavaa binaarihakupuuta, jota kutsutaan punamustaksi puuksi, tallentaakseen elementit lajiteltuun järjestykseen.

Edut:

    Lajiteltu järjestys:TreeSet ylläpitää elementit automaattisesti lajiteltuna niiden luonnollisen järjestyksen tai mukautetun vertailijan perusteella. Se mahdollistaa elementtien tehokkaan etsimisen ja noudon nousevassa tai laskevassa järjestyksessä.Ei päällekkäisiä elementtejä:TreeSet ei salli päällekkäisiä elementtejä. Se varmistaa, että jokainen joukon elementti on ainutlaatuinen, mikä voi olla hyödyllistä skenaarioissa, joissa päällekkäisiä arvoja tulee välttää.Tehokkaat toiminnot:TreeSet tarjoaa tehokkaita toimintoja, kuten lisääminen, poistaminen ja etsiminen. Näiden operaatioiden aikakompleksisuus on O(log n), missä n on joukon alkioiden lukumäärä.Navigoitavien joukon toiminnot:TreeSet tarjoaa lisänavigointimenetelmiä, kuten korkeampi(), pienempi(), katto() ja floor(), joiden avulla voit löytää elementtejä, jotka ovat suurempia, pienempiä tai yhtä suuria kuin annettu arvo.

Haitat:

    Yleiskustannukset:TreeSet vaatii lisämuistia sisäisen tietorakenteen tallentamiseen, mikä voi johtaa suurempiin muistiin verrattuna muihin joukkototeutuksiin.Hitaampi asettaminen ja poistaminen:TreeSetin lisäys- ja poistotoiminnot sisältävät elementtien järjestyksen ylläpitämisen, mikä saattaa edellyttää puun uudelleenjärjestelyä. Se voi tehdä näistä toiminnoista hieman hitaampia verrattuna HashSet- tai LinkedHashSet-toimintoihin.Rajoitettu räätälöinti:TreeSet on suunniteltu ensisijaisesti luonnolliseen järjestykseen tai yksittäiseen mukautettuun vertailuun. Se saattaa tarvita enemmän joustavuutta useille lajittelukriteereille tai monimutkaiselle lajittelulogiikalle.

Toiminnot:

    add(element):Lisää elementin TreeSet-ryhmään säilyttäen samalla järjestyksen.poista (elementti):Poistaa määritetyn elementin TreeSetistä.sisältää (elementti):Tarkistaa, sisältääkö TreeSet määritetyn elementin.koko():Palauttaa TreeSetin elementtien määrän.ensimmäinen():Palauttaa ensimmäisen (alimman) elementin TreeSetissä.kestää():Palauttaa TreeSetin viimeisen (korkeimman) elementin.korkeampi(elementti):Palauttaa TreeSetin pienimmän elementin, joka on ehdottomasti suurempi kuin annettu elementti.alempi(elementti):Palauttaa TreeSetin suurimman elementin, joka on ehdottomasti pienempi kuin annettu elementti.

Toteutus:

Tiedoston nimi: 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); } } } 

Lähtö:

 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) TreeMap:

TreeMap on Java-luokka, joka toteuttaa Map-rajapinnan ja tarjoaa lajitellun avainarvokartoituksen avainten luonnollisen järjestyksen tai mukautetun vertailijan perusteella.

Edut:

heal tool gimp
    Lajiteltu järjestys:TreeMap pitää avaimet lajiteltuna, mikä mahdollistaa tehokkaan haun, haun ja aluepohjaiset toiminnot.Avainarvokartoitus:TreeMap tallentaa avain-arvo-pareja, mikä mahdollistaa tehokkaan arvojen haun ja noudon niihin liittyvien avainten perusteella.Puna-musta puun toteutus:TreeMap käyttää sisäisesti tasapainotettua binaarihakupuuta (Red-Black Tree), mikä varmistaa tehokkaan suorituskyvyn myös suurille tietojoukoille.Tuki mukautetuille vertailijoille:TreeMap mahdollistaa mukautettujen vertailijoiden käytön avainten lajittelujärjestyksen määrittämiseksi, mikä tarjoaa joustavuutta lajittelukriteereihin.

Haitat:

    Ylimääräinen muisti:TreeMap vaatii lisämuistia sisäisen puurakenteen ja siihen liittyvien objektien tallentamiseen, mikä johtaa enemmän muistin käyttöön verrattuna yksinkertaisempiin tietorakenteisiin, kuten HashMap.Hitaampi lisäys ja poistaminen:TreeMapin lisäys- ja poistotoimintojen ajallinen monimutkaisuus on O(log n) puun uudelleenjärjestelytarpeen vuoksi, mikä tekee niistä hitaampia verrattuna HashMapiin tai LinkedHashMapiin.Rajoitettu suorituskyky lajittelemattomille tiedoille:TreeMap toimii tehokkaasti lajitellulle tiedolle, mutta sen suorituskyky voi heikentyä, kun käsitellään lajittelemattomia tietoja tai toistuvia muutoksia, koska se vaatii lajittelujärjestyksen ylläpitämistä.

Toiminnot:

    put(avain, arvo):Lisää avain-arvo-parin TreeMapiin.hanki (avain):Hakee määritettyyn avaimeen liittyvän arvon.sisältääKey(avain):Tarkistaa, sisältääkö TreeMap tietyn avaimen.poista (avain):Poistaa määritettyyn avaimeen liittyvän avain-arvo-parin.koko():Palauttaa avainarvoparien määrän TreeMapissa.keySet():Palauttaa joukon kaikkia TreeMapin avaimia.arvot():Palauttaa kokoelman kaikista TreeMapin arvoista.entrySet():Palauttaa joukon avain-arvo-pareja TreeMapissa.

Toteutus:

Tiedoston nimi: 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); } } } 

Lähtö:

 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) Kaavio:

Graafit ovat tietorakennetta, joka edustaa kokoelmaa toisiinsa kytkettyjä solmuja tai pisteitä. Ne koostuvat pisteistä ja reunoista, joissa kärjet edustavat entiteettiä ja reunat edustavat näiden entiteettien välisiä suhteita.

Edut:

    Monipuolisuus:Kaaviot voivat edustaa monenlaisia ​​todellisia skenaarioita, joten ne sopivat erilaisiin sovelluksiin, kuten sosiaalisiin verkostoihin, liikennejärjestelmiin ja tietokoneverkkoihin.Suhteen edustus:Kaaviot tarjoavat luonnollisen tavan esittää entiteettien välisiä suhteita ja yhteyksiä, mikä mahdollistaa näiden suhteiden tehokkaan analyysin ja läpikäynnin.Tehokas haku ja läpikulku:Graafialgoritmit, kuten leveyshaku (BFS) ja syväyshaku (DFS), mahdollistavat tehokkaan läpikäynnin ja graafin kärkien ja reunojen haun.Monimutkaisten suhteiden mallintaminen:Kaaviot voivat mallintaa monimutkaisia ​​suhteita, mukaan lukien hierarkkisia rakenteita, syklisiä riippuvuuksia ja useita yhteyksiä entiteettien välillä.

Haitat:

    Tilan monimutkaisuus:Graafit voivat kuluttaa huomattavan määrän muistia, varsinkin suuret graafit, joissa on useita pisteitä ja reunoja.Toiminnan monimutkaisuus:Tietyt kuvaajatoiminnot, kuten lyhimmän polun löytäminen tai jaksojen havaitseminen, voivat olla aika monimutkaisia, erityisesti tiheissä kaavioissa.Huollon vaikeus:Kuvaajan muokkaaminen tai päivittäminen voi olla monimutkaista, koska muutokset graafin rakenteessa voivat vaikuttaa sen liitettävyyteen ja olemassa oleviin algoritmeihin.

Toteutus:

Tiedoston nimi: 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) Puu:

Puu on tietojenkäsittelytieteessä laajalti käytetty tietorakenne, joka edustaa hierarkkista rakennetta. Se koostuu reunoilla yhdistetyistä solmuista, joissa jokaisessa solmussa voi olla nolla tai useampia lapsisolmuja.

Edut:

    Hierarkinen rakenne:Puut tarjoavat luonnollisen tavan esittää hierarkkisia suhteita, kuten tiedostojärjestelmiä, organisaatiokaavioita tai HTML/XML-dokumentteja.Tehokas haku:Binäärihakupuut mahdollistavat tehokkaan haun aikakompleksisuudella O(log n), joten ne soveltuvat lajiteltujen tietojen tallentamiseen ja hakemiseen.Nopea lisäys ja poistaminen:Puutietorakenteet tarjoavat tehokkaita lisäys- ja poistotoimintoja, erityisesti tasapainotettuina, kuten AVL-puut tai puna-mustat puut.Tilattu iteraatio:Binaarihakupuun läpikulku järjestyksessä antaa elementit lajiteltuun järjestykseen, mikä on hyödyllistä tehtävissä, kuten elementtien tulostamisessa lajiteltuina tai seuraavan/edellisen elementin etsimisessä.

Haitat:

    Korkea muisti:Puut vaativat lisämuistia solmuviittausten tai osoittimien tallentamiseen, mikä voi johtaa enemmän muistin käyttöön verrattuna lineaarisiin tietorakenteisiin, kuten taulukoihin tai listoihin.Monimutkainen toteutus:Puutietorakenteen toteuttaminen ja ylläpito voi olla monimutkaisempaa verrattuna muihin tietorakenteisiin, kuten taulukoihin tai listoihin, erityisesti tasapainotettujen puuvarianttien osalta.Rajoitettu toiminta:Jotkut puumuunnelmat, kuten binäärihakupuut, eivät tue tehokkaita toimintoja, kuten k:nneksi pienimmän elementin löytämistä tai elementin arvon löytämistä.

Toiminnot:

    Lisäys:Lisää uusi solmu puuhun.Poisto:Poista solmu puusta.Hae:Etsi puusta tietty solmu tai elementti.Läpikulku:Kulje puu eri järjestyksessä, kuten tilaus-, ennakko- tai jälkitilausjärjestyksessä.Korkeus/syvyys:Laske puun korkeus tai syvyys.Saldo:Varmista, että puu pysyy tasapainossa tehokkaan toiminnan ylläpitämiseksi.

Toteutus:

Tiedoston nimi: 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)>