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

bookMap Muiden Tietorakenteiden Kanssa

Yleisesti ottaen kartoista ei ole paljoa enempää kerrottavaa. Tieto siitä, että kyseessä on tietorakenne, joka tallentaa tietoa avain-arvo-periaatteella, riittää. Mutta entä jos haluat kokeilla jotain erikoisempaa ja asettaa tietorakenteen, kuten ArrayList, arvoksi karttaan?

Tietorakenteiden käyttäminen arvoina kartassa

Ehkäpä hashmapissa on liian vähän törmäyksiä, ja haluat tallentaa tietoa vieläkin erikoisemmalla tavalla.

Main.java

Main.java

copy
1234567891011121314151617181920212223242526
package com.example; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; public class Main { public static void main(String[] args) { List<String> marketingDepartment = new ArrayList<>(); marketingDepartment.add("Michael"); marketingDepartment.add("Alice"); marketingDepartment.add("Jimmy"); List<String> developerDepartment = new ArrayList<>(); developerDepartment.add("Bob"); developerDepartment.add("John"); developerDepartment.add("Ryan"); Map<String, List<String>> company = new HashMap<>(); company.put("Marketing", marketingDepartment); company.put("Development", developerDepartment); System.out.println("Company: " + company); } }

Tässä on esimerkki tietorakenteen luomisesta, joka tallentaa tietoja tietystä yrityksestä. Tätä lähestymistapaa käytetään joskus työskenneltäessä tietokantojen kanssa, mutta sitä ei suositella liiallisesti, sillä tiedon hakeminen tällaisista tietorakenteista voi olla haastavaa. Oletetaan esimerkiksi, että haluamme hakea markkinoijan indeksissä 1.

Main.java

Main.java

copy
1234567891011121314151617181920212223242526272829
package com.example; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; public class Main { public static void main(String[] args) { List<String> marketingDepartment = new ArrayList<>(); marketingDepartment.add("Michael"); marketingDepartment.add("Alice"); marketingDepartment.add("Jimmy"); List<String> developerDepartment = new ArrayList<>(); developerDepartment.add("Bob"); developerDepartment.add("John"); developerDepartment.add("Ryan"); Map<String, List<String>> company = new HashMap<>(); company.put("Marketing", marketingDepartment); company.put("Development", developerDepartment); System.out.println("Company: " + company); String marketerAtIndexOne = company.get("Marketing").get(1); System.out.println("Marketer at index 1 is: " + marketerAtIndexOne); } }

Aluksi tämä ei vaikuta monimutkaiselta. Tarvitsee vain käyttää metodia uudelleen. Ohjelmoinnissa on kuitenkin tärkeää välttää kovakoodausta.

Kovakoodaus on huono käytäntö, ja sitä tulisi välttää kaikissa tilanteissa. Tässä esimerkki kovakoodauksesta, jonka jälkeen korjaamme sen yhdessä:

Main.java

Main.java

copy
123456789101112
package com.example; public class Main { public static void main(String[] args) { // Hardcoded value double price = 49.99; // Using hardcoded value double discountedPrice = price * 0.8; // 20% discount System.out.println("Discounted Price: " + discountedPrice); } }

Kuten huomaat, yllä olevassa koodissa on kovakoodaus. Kun alennus määritellään, käytetään tavallista numeroa. Tämä alennus tulisi tallentaa muuttujaan, jotta voimme käyttää arvoa uudelleen myöhemmin. Parannetaan yllä olevaa koodia:

Main.java

Main.java

copy
12345678910111213
package com.example; public class Main { public static void main(String[] args) { // Using variables instead of hardcoding double price = 49.99; double discountPercentage = 0.2; // 20% discount // Using variables double discountedPrice = price * (1 - discountPercentage); System.out.println("Discounted Price: " + discountedPrice); } }

Tällä tavalla saadaan muuttuja, joka sisältää alennusarvon, ja suuressa ohjelmassa tulevaisuudessa tarvitsisi muuttaa vain tämän yhden muuttujan arvoa.

Jos arvo olisi kovakoodattu, se pitäisi muuttaa jokaisessa esiintymässä, mikä lisäisi huomattavasti aikaa koodin parantamiseen tai muokkaamiseen.

Yhteenveto

Yhteenvetona voidaan todeta, että tietorakenteissa voidaan käyttää erilaisia tietotyyppejä, mukaan lukien muita tietorakenteita. Tämä helpottaa tietorakenteiden käyttöä ja lisää sovelluksen joustavuutta. Kuitenkin algoritminen monimutkaisuus on tärkeä huomioitava tekijä sovellusta kirjoitettaessa. Kun käytetään tietorakenteita muiden tietorakenteiden sisällä, on melko helppoa tehdä virheitä ja monimutkaistaa tietyn operaation suorittamista merkittävästi.

Pidä tämä mielessä, niin koodisi on erinomaista!

1. Mikä on algoritmin aikavaativuus, joka käy läpi taulukon, jonka koko on n, ja suorittaa jokaiselle alkiolle vakioaikaisen operaation?

2. Mikä on suurin haittapuoli arvojen kovakoodauksessa suoraan koodiin?

3. Kun annetaan kaksi algoritmia, joiden aikavaativuudet ovat O(n log n) ja O(n^2), kumpi on yleensä tehokkaampi suurilla syötteillä?

question mark

Mikä on algoritmin aikavaativuus, joka käy läpi taulukon, jonka koko on n, ja suorittaa jokaiselle alkiolle vakioaikaisen operaation?

Select the correct answer

question mark

Mikä on suurin haittapuoli arvojen kovakoodauksessa suoraan koodiin?

Select the correct answer

question mark

Kun annetaan kaksi algoritmia, joiden aikavaativuudet ovat O(n log n) ja O(n^2), kumpi on yleensä tehokkaampi suurilla syötteillä?

Select the correct answer

Oliko kaikki selvää?

Miten voimme parantaa sitä?

Kiitos palautteestasi!

Osio 3. Luku 4

Kysy tekoälyä

expand

Kysy tekoälyä

ChatGPT

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

Suggested prompts:

Can you give an example of how to store an ArrayList as a value in a map?

What are some best practices to avoid hardcoding in such scenarios?

Can you explain more about the potential challenges of retrieving data from nested data structures?

bookMap Muiden Tietorakenteiden Kanssa

Pyyhkäise näyttääksesi valikon

Yleisesti ottaen kartoista ei ole paljoa enempää kerrottavaa. Tieto siitä, että kyseessä on tietorakenne, joka tallentaa tietoa avain-arvo-periaatteella, riittää. Mutta entä jos haluat kokeilla jotain erikoisempaa ja asettaa tietorakenteen, kuten ArrayList, arvoksi karttaan?

Tietorakenteiden käyttäminen arvoina kartassa

Ehkäpä hashmapissa on liian vähän törmäyksiä, ja haluat tallentaa tietoa vieläkin erikoisemmalla tavalla.

Main.java

Main.java

copy
1234567891011121314151617181920212223242526
package com.example; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; public class Main { public static void main(String[] args) { List<String> marketingDepartment = new ArrayList<>(); marketingDepartment.add("Michael"); marketingDepartment.add("Alice"); marketingDepartment.add("Jimmy"); List<String> developerDepartment = new ArrayList<>(); developerDepartment.add("Bob"); developerDepartment.add("John"); developerDepartment.add("Ryan"); Map<String, List<String>> company = new HashMap<>(); company.put("Marketing", marketingDepartment); company.put("Development", developerDepartment); System.out.println("Company: " + company); } }

Tässä on esimerkki tietorakenteen luomisesta, joka tallentaa tietoja tietystä yrityksestä. Tätä lähestymistapaa käytetään joskus työskenneltäessä tietokantojen kanssa, mutta sitä ei suositella liiallisesti, sillä tiedon hakeminen tällaisista tietorakenteista voi olla haastavaa. Oletetaan esimerkiksi, että haluamme hakea markkinoijan indeksissä 1.

Main.java

Main.java

copy
1234567891011121314151617181920212223242526272829
package com.example; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; public class Main { public static void main(String[] args) { List<String> marketingDepartment = new ArrayList<>(); marketingDepartment.add("Michael"); marketingDepartment.add("Alice"); marketingDepartment.add("Jimmy"); List<String> developerDepartment = new ArrayList<>(); developerDepartment.add("Bob"); developerDepartment.add("John"); developerDepartment.add("Ryan"); Map<String, List<String>> company = new HashMap<>(); company.put("Marketing", marketingDepartment); company.put("Development", developerDepartment); System.out.println("Company: " + company); String marketerAtIndexOne = company.get("Marketing").get(1); System.out.println("Marketer at index 1 is: " + marketerAtIndexOne); } }

Aluksi tämä ei vaikuta monimutkaiselta. Tarvitsee vain käyttää metodia uudelleen. Ohjelmoinnissa on kuitenkin tärkeää välttää kovakoodausta.

Kovakoodaus on huono käytäntö, ja sitä tulisi välttää kaikissa tilanteissa. Tässä esimerkki kovakoodauksesta, jonka jälkeen korjaamme sen yhdessä:

Main.java

Main.java

copy
123456789101112
package com.example; public class Main { public static void main(String[] args) { // Hardcoded value double price = 49.99; // Using hardcoded value double discountedPrice = price * 0.8; // 20% discount System.out.println("Discounted Price: " + discountedPrice); } }

Kuten huomaat, yllä olevassa koodissa on kovakoodaus. Kun alennus määritellään, käytetään tavallista numeroa. Tämä alennus tulisi tallentaa muuttujaan, jotta voimme käyttää arvoa uudelleen myöhemmin. Parannetaan yllä olevaa koodia:

Main.java

Main.java

copy
12345678910111213
package com.example; public class Main { public static void main(String[] args) { // Using variables instead of hardcoding double price = 49.99; double discountPercentage = 0.2; // 20% discount // Using variables double discountedPrice = price * (1 - discountPercentage); System.out.println("Discounted Price: " + discountedPrice); } }

Tällä tavalla saadaan muuttuja, joka sisältää alennusarvon, ja suuressa ohjelmassa tulevaisuudessa tarvitsisi muuttaa vain tämän yhden muuttujan arvoa.

Jos arvo olisi kovakoodattu, se pitäisi muuttaa jokaisessa esiintymässä, mikä lisäisi huomattavasti aikaa koodin parantamiseen tai muokkaamiseen.

Yhteenveto

Yhteenvetona voidaan todeta, että tietorakenteissa voidaan käyttää erilaisia tietotyyppejä, mukaan lukien muita tietorakenteita. Tämä helpottaa tietorakenteiden käyttöä ja lisää sovelluksen joustavuutta. Kuitenkin algoritminen monimutkaisuus on tärkeä huomioitava tekijä sovellusta kirjoitettaessa. Kun käytetään tietorakenteita muiden tietorakenteiden sisällä, on melko helppoa tehdä virheitä ja monimutkaistaa tietyn operaation suorittamista merkittävästi.

Pidä tämä mielessä, niin koodisi on erinomaista!

1. Mikä on algoritmin aikavaativuus, joka käy läpi taulukon, jonka koko on n, ja suorittaa jokaiselle alkiolle vakioaikaisen operaation?

2. Mikä on suurin haittapuoli arvojen kovakoodauksessa suoraan koodiin?

3. Kun annetaan kaksi algoritmia, joiden aikavaativuudet ovat O(n log n) ja O(n^2), kumpi on yleensä tehokkaampi suurilla syötteillä?

question mark

Mikä on algoritmin aikavaativuus, joka käy läpi taulukon, jonka koko on n, ja suorittaa jokaiselle alkiolle vakioaikaisen operaation?

Select the correct answer

question mark

Mikä on suurin haittapuoli arvojen kovakoodauksessa suoraan koodiin?

Select the correct answer

question mark

Kun annetaan kaksi algoritmia, joiden aikavaativuudet ovat O(n log n) ja O(n^2), kumpi on yleensä tehokkaampi suurilla syötteillä?

Select the correct answer

Oliko kaikki selvää?

Miten voimme parantaa sitä?

Kiitos palautteestasi!

Osio 3. Luku 4
some-alt