Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Oppiskele Tietorakenteiden Esittely | Perusrakenteet Javassa
Practice
Projects
Quizzes & Challenges
Quizzes
Challenges
/
Java-tietorakenteet

bookTietorakenteiden Esittely

Tervetuloa kurssille Java-tietorakenteet! Tämä kurssi on suunnattu Java-kehittäjille, jotka haluavat syventää ymmärrystään tietorakenteista ja parantaa koodauksen tehokkuuttaan.

Tämä kurssi ei sovellu aloittelijoille. Jos et ole suorittanut kolmea aiempaa Java-kurssiamme, saatat kokea tämän haastavaksi.

Saadaksesi parhaan hyödyn tästä kurssista, suosittelemme vahvasti suorittamaan ne ensin ennen kuin siirryt Java-tietorakenteisiin.

Mitä kokoelmat ovat ja miksi niitä tarvitaan?

Kokoelmat Javassa ovat yksi tietorakenteista, joita käytetään hyvin usein. Tietorakenne puolestaan on tapa tallentaa erilaisia tietotyyppejä.

Yksinkertaisesti sanottuna kokoelma on tietojen tai tietyn tyyppisten muuttujien lista.
Kun taas taulukot ovat staattisia, eli niillä on kiinteä koko, joka määritellään alustuksessa, kokoelmat voidaan nähdä dynaamisina taulukoina. Ne laajenevat elementtien lisääntyessä. Kun lisäät alkion listaan, listan koko kasvaa niin, että kaikki alkiot mahtuvat mukaan.

Kokoelmat voivat auttaa ymmärtämään tietokannan toimintaa, koska kokoelmiin voidaan myös tallentaa suuria määriä dataa. Kokoelmiin voidaan tallentaa erilaisten luokkien olioita. Voimme jopa tallentaa taulukoita kokoelmiin, mikä on erittäin kätevä tapa säilyttää suuria määriä dataa.

Kääreet

Kun aloitetaan työskentely kokoelmien kanssa, on syytä huomioida, että kokoelmat eivät voi käsitellä primitiivisiä tietotyyppejä. Ne toimivat nimenomaan olioiden kanssa. Yksinkertaisen luvun tai merkin tallentamiseen tarvitaan kääreluokka kyseiselle primitiiviselle tietotyypille.

Primitiiviset tietotyypit (kuten int, char, float, boolean ja muut) eivät ole olioita, ja joskus niitä täytyy käsitellä olioina, esimerkiksi kokoelmissa tai käytettäessä luokkia, jotka odottavat olioita. Kääreluokat tarjoavat olio-pohjaisen kääreen jokaiselle primitiiviselle tyypille.

Tässä on luettelo kääreluokista (wrapper classes) perustyypeille (primitive types):

Nämä luokat tarjoavat menetelmiä muuntamiseen perustyyppien ja olioiden välillä sekä erilaisia toimintoja arvojen käsittelyyn, kuten vertailu, aritmeettiset operaatiot ja paljon muuta.

Tarkastellaan muutamia esimerkkejä kääreluokkien käytöstä:

Main.java

Main.java

copy
1234567891011
package com.example; public class Main { public static void main(String[] args) { Integer wrap = 15; // Autoboxing: converting a primitive int to an `Integer` object int prim = wrap; // Unboxing: converting an `Integer` object back to a primitive int int result = wrap.compareTo(prim); // Using the `compareTo` method of the `Integer` class System.out.println(result); } }

Yllä olevassa koodissa loimme Integer-luokan olion ja alustimme sen tavallisella numerolla. Tämä on esimerkki autoboxingista. Seuraavaksi loimme primitiivisen int-muuttujan ja annoimme sille wrapper-luokan arvon, mitä kutsutaan unboxingiksi.

Tästä voimme päätellä, että autoboxing tarkoittaa automaattista muuntamista primitiivisestä tietotyypistä wrapper-luokan olioksi. Vastaavasti unboxing on automaattinen muuntaminen wrapper-luokan oliosta takaisin primitiiviseksi tietotyypiksi.

Voit myös huomata, kuinka käytimme vertailumenetelmää, joka palauttaa 0, jos arvot ovat yhtä suuret, 1, jos vasemmanpuoleinen arvo on suurempi kuin oikeanpuoleinen, ja -1, jos vasemmanpuoleinen arvo on pienempi kuin oikeanpuoleinen.

Wrapper-luokat tarjoavat monia hyödyllisiä metodeja. Et käsittele niitä kaikkia tässä, mutta voit tutkia niitä tarkemmin IDE:ssäsi.

Tehtävä

Swipe to start coding

Täydennä upgrade_comparing-metodi siten, että se käyttää compareTo()-metodia ja palauttaa kuvailevan viestin vertailun tuloksen perusteella.

  1. Kutsu compareTo()-metodia left_value-oliolle, välittäen right_value argumenttina.
  2. Tallenna tulos muuttujaan comparingResult.
  3. Käytä switch-lausetta tämän tuloksen käsittelemiseen:
    • Jos tulos on -1, aseta muuttujaan result arvo "The right value is greater".
    • Jos tulos on 0, aseta muuttujaan result arvo "The values are equal".
    • Jos tulos on 1, aseta muuttujaan result arvo "The left value is greater".
  4. Jos tulos ei jostain syystä vastaa mitään näistä arvoista, tulosta "Error".
  5. Palauta muuttuja result metodista.

Ratkaisu

Oliko kaikki selvää?

Miten voimme parantaa sitä?

Kiitos palautteestasi!

Osio 1. Luku 1
single

single

Kysy tekoälyä

expand

Kysy tekoälyä

ChatGPT

Kysy mitä tahansa tai kokeile jotakin ehdotetuista kysymyksistä aloittaaksesi keskustelumme

close

bookTietorakenteiden Esittely

Pyyhkäise näyttääksesi valikon

Tervetuloa kurssille Java-tietorakenteet! Tämä kurssi on suunnattu Java-kehittäjille, jotka haluavat syventää ymmärrystään tietorakenteista ja parantaa koodauksen tehokkuuttaan.

Tämä kurssi ei sovellu aloittelijoille. Jos et ole suorittanut kolmea aiempaa Java-kurssiamme, saatat kokea tämän haastavaksi.

Saadaksesi parhaan hyödyn tästä kurssista, suosittelemme vahvasti suorittamaan ne ensin ennen kuin siirryt Java-tietorakenteisiin.

Mitä kokoelmat ovat ja miksi niitä tarvitaan?

Kokoelmat Javassa ovat yksi tietorakenteista, joita käytetään hyvin usein. Tietorakenne puolestaan on tapa tallentaa erilaisia tietotyyppejä.

Yksinkertaisesti sanottuna kokoelma on tietojen tai tietyn tyyppisten muuttujien lista.
Kun taas taulukot ovat staattisia, eli niillä on kiinteä koko, joka määritellään alustuksessa, kokoelmat voidaan nähdä dynaamisina taulukoina. Ne laajenevat elementtien lisääntyessä. Kun lisäät alkion listaan, listan koko kasvaa niin, että kaikki alkiot mahtuvat mukaan.

Kokoelmat voivat auttaa ymmärtämään tietokannan toimintaa, koska kokoelmiin voidaan myös tallentaa suuria määriä dataa. Kokoelmiin voidaan tallentaa erilaisten luokkien olioita. Voimme jopa tallentaa taulukoita kokoelmiin, mikä on erittäin kätevä tapa säilyttää suuria määriä dataa.

Kääreet

Kun aloitetaan työskentely kokoelmien kanssa, on syytä huomioida, että kokoelmat eivät voi käsitellä primitiivisiä tietotyyppejä. Ne toimivat nimenomaan olioiden kanssa. Yksinkertaisen luvun tai merkin tallentamiseen tarvitaan kääreluokka kyseiselle primitiiviselle tietotyypille.

Primitiiviset tietotyypit (kuten int, char, float, boolean ja muut) eivät ole olioita, ja joskus niitä täytyy käsitellä olioina, esimerkiksi kokoelmissa tai käytettäessä luokkia, jotka odottavat olioita. Kääreluokat tarjoavat olio-pohjaisen kääreen jokaiselle primitiiviselle tyypille.

Tässä on luettelo kääreluokista (wrapper classes) perustyypeille (primitive types):

Nämä luokat tarjoavat menetelmiä muuntamiseen perustyyppien ja olioiden välillä sekä erilaisia toimintoja arvojen käsittelyyn, kuten vertailu, aritmeettiset operaatiot ja paljon muuta.

Tarkastellaan muutamia esimerkkejä kääreluokkien käytöstä:

Main.java

Main.java

copy
1234567891011
package com.example; public class Main { public static void main(String[] args) { Integer wrap = 15; // Autoboxing: converting a primitive int to an `Integer` object int prim = wrap; // Unboxing: converting an `Integer` object back to a primitive int int result = wrap.compareTo(prim); // Using the `compareTo` method of the `Integer` class System.out.println(result); } }

Yllä olevassa koodissa loimme Integer-luokan olion ja alustimme sen tavallisella numerolla. Tämä on esimerkki autoboxingista. Seuraavaksi loimme primitiivisen int-muuttujan ja annoimme sille wrapper-luokan arvon, mitä kutsutaan unboxingiksi.

Tästä voimme päätellä, että autoboxing tarkoittaa automaattista muuntamista primitiivisestä tietotyypistä wrapper-luokan olioksi. Vastaavasti unboxing on automaattinen muuntaminen wrapper-luokan oliosta takaisin primitiiviseksi tietotyypiksi.

Voit myös huomata, kuinka käytimme vertailumenetelmää, joka palauttaa 0, jos arvot ovat yhtä suuret, 1, jos vasemmanpuoleinen arvo on suurempi kuin oikeanpuoleinen, ja -1, jos vasemmanpuoleinen arvo on pienempi kuin oikeanpuoleinen.

Wrapper-luokat tarjoavat monia hyödyllisiä metodeja. Et käsittele niitä kaikkia tässä, mutta voit tutkia niitä tarkemmin IDE:ssäsi.

Tehtävä

Swipe to start coding

Täydennä upgrade_comparing-metodi siten, että se käyttää compareTo()-metodia ja palauttaa kuvailevan viestin vertailun tuloksen perusteella.

  1. Kutsu compareTo()-metodia left_value-oliolle, välittäen right_value argumenttina.
  2. Tallenna tulos muuttujaan comparingResult.
  3. Käytä switch-lausetta tämän tuloksen käsittelemiseen:
    • Jos tulos on -1, aseta muuttujaan result arvo "The right value is greater".
    • Jos tulos on 0, aseta muuttujaan result arvo "The values are equal".
    • Jos tulos on 1, aseta muuttujaan result arvo "The left value is greater".
  4. Jos tulos ei jostain syystä vastaa mitään näistä arvoista, tulosta "Error".
  5. Palauta muuttuja result metodista.

Ratkaisu

Switch to desktopVaihda työpöytään todellista harjoitusta vartenJatka siitä, missä olet käyttämällä jotakin alla olevista vaihtoehdoista
Oliko kaikki selvää?

Miten voimme parantaa sitä?

Kiitos palautteestasi!

Osio 1. Luku 1
single

single

some-alt