Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Impara Mappa con Altre Strutture Dati | Padronanza Delle Mappe in Java
Strutture Dati Java

bookMappa con Altre Strutture Dati

In generale, non c'è molto altro da dire sulle mappe. Sapere che si tratta di una struttura dati che memorizza dati secondo il principio chiave-valore è sufficiente. Ma cosa succede se vuoi sperimentare un po' e passare una struttura dati come un ArrayList come valore nella mappa?

Passaggio di Strutture Dati come Valori in una Mappa

Potresti avere pochissime collisioni nell'hashmap e potresti voler memorizzare i dati in un modo ancora più particolare.

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

Ecco un esempio di creazione di una struttura dati che memorizza informazioni su una specifica azienda. Questo approccio viene talvolta utilizzato quando si lavora con i database, ma è consigliabile non abusarne, poiché recuperare dati da tali strutture dati può risultare difficile. Ad esempio, supponiamo di voler recuperare il marketer all'indice 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); } }

A prima vista, non sembra complicato. Basta utilizzare il metodo un'altra volta. Tuttavia, in programmazione è fondamentale evitare l'hardcoding.

L'hardcoding è una pratica negativa e deve essere evitata in ogni modo. Ecco un esempio di hardcoding, che poi correggeremo insieme:

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

Come puoi vedere, nel codice sopra è presente hardcoding. Quando si specifica lo sconto, viene utilizzato un numero semplice. È necessario memorizzare questo sconto in una variabile per poter riutilizzare questo valore in seguito. Miglioriamo il codice sopra:

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

In questo modo, si ottiene una variabile con il valore dello sconto, e in un programma di grandi dimensioni in futuro, basterà modificare il valore di questa singola variabile.

Se fosse stato inserito manualmente nel codice, sarebbe necessario modificare il valore in ogni occorrenza, aumentando notevolmente il tempo necessario per migliorare o modificare il codice.

Riepilogo

In sintesi, si può affermare che nelle strutture dati è possibile utilizzare diversi tipi di dati, incluse altre strutture dati. Questo aggiunge praticità all’utilizzo di queste strutture dati e flessibilità all’applicazione. Tuttavia, non bisogna dimenticare la complessità algoritmica, poiché rappresenta un parametro fondamentale durante la scrittura di un’applicazione. Quando si utilizzano strutture dati all’interno di altre strutture dati, è piuttosto facile commettere errori e complicare notevolmente l’esecuzione di una specifica operazione.

Prestare attenzione a questo aspetto garantirà che il codice sia eccellente!

1. Qual è la complessità temporale di un algoritmo che itera su un array di dimensione n ed esegue un'operazione a tempo costante su ogni elemento?

2. Qual è il principale svantaggio dell'inserire valori hardcoded direttamente nel codice?

3. Dati due algoritmi con complessità temporali O(n log n) e O(n^2), quale risulta generalmente più efficiente per input di grandi dimensioni?

question mark

Qual è la complessità temporale di un algoritmo che itera su un array di dimensione n ed esegue un'operazione a tempo costante su ogni elemento?

Select the correct answer

question mark

Qual è il principale svantaggio dell'inserire valori hardcoded direttamente nel codice?

Select the correct answer

question mark

Dati due algoritmi con complessità temporali O(n log n) e O(n^2), quale risulta generalmente più efficiente per input di grandi dimensioni?

Select the correct answer

Tutto è chiaro?

Come possiamo migliorarlo?

Grazie per i tuoi commenti!

Sezione 3. Capitolo 4

Chieda ad AI

expand

Chieda ad AI

ChatGPT

Chieda pure quello che desidera o provi una delle domande suggerite per iniziare la nostra conversazione

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?

bookMappa con Altre Strutture Dati

Scorri per mostrare il menu

In generale, non c'è molto altro da dire sulle mappe. Sapere che si tratta di una struttura dati che memorizza dati secondo il principio chiave-valore è sufficiente. Ma cosa succede se vuoi sperimentare un po' e passare una struttura dati come un ArrayList come valore nella mappa?

Passaggio di Strutture Dati come Valori in una Mappa

Potresti avere pochissime collisioni nell'hashmap e potresti voler memorizzare i dati in un modo ancora più particolare.

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

Ecco un esempio di creazione di una struttura dati che memorizza informazioni su una specifica azienda. Questo approccio viene talvolta utilizzato quando si lavora con i database, ma è consigliabile non abusarne, poiché recuperare dati da tali strutture dati può risultare difficile. Ad esempio, supponiamo di voler recuperare il marketer all'indice 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); } }

A prima vista, non sembra complicato. Basta utilizzare il metodo un'altra volta. Tuttavia, in programmazione è fondamentale evitare l'hardcoding.

L'hardcoding è una pratica negativa e deve essere evitata in ogni modo. Ecco un esempio di hardcoding, che poi correggeremo insieme:

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

Come puoi vedere, nel codice sopra è presente hardcoding. Quando si specifica lo sconto, viene utilizzato un numero semplice. È necessario memorizzare questo sconto in una variabile per poter riutilizzare questo valore in seguito. Miglioriamo il codice sopra:

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

In questo modo, si ottiene una variabile con il valore dello sconto, e in un programma di grandi dimensioni in futuro, basterà modificare il valore di questa singola variabile.

Se fosse stato inserito manualmente nel codice, sarebbe necessario modificare il valore in ogni occorrenza, aumentando notevolmente il tempo necessario per migliorare o modificare il codice.

Riepilogo

In sintesi, si può affermare che nelle strutture dati è possibile utilizzare diversi tipi di dati, incluse altre strutture dati. Questo aggiunge praticità all’utilizzo di queste strutture dati e flessibilità all’applicazione. Tuttavia, non bisogna dimenticare la complessità algoritmica, poiché rappresenta un parametro fondamentale durante la scrittura di un’applicazione. Quando si utilizzano strutture dati all’interno di altre strutture dati, è piuttosto facile commettere errori e complicare notevolmente l’esecuzione di una specifica operazione.

Prestare attenzione a questo aspetto garantirà che il codice sia eccellente!

1. Qual è la complessità temporale di un algoritmo che itera su un array di dimensione n ed esegue un'operazione a tempo costante su ogni elemento?

2. Qual è il principale svantaggio dell'inserire valori hardcoded direttamente nel codice?

3. Dati due algoritmi con complessità temporali O(n log n) e O(n^2), quale risulta generalmente più efficiente per input di grandi dimensioni?

question mark

Qual è la complessità temporale di un algoritmo che itera su un array di dimensione n ed esegue un'operazione a tempo costante su ogni elemento?

Select the correct answer

question mark

Qual è il principale svantaggio dell'inserire valori hardcoded direttamente nel codice?

Select the correct answer

question mark

Dati due algoritmi con complessità temporali O(n log n) e O(n^2), quale risulta generalmente più efficiente per input di grandi dimensioni?

Select the correct answer

Tutto è chiaro?

Come possiamo migliorarlo?

Grazie per i tuoi commenti!

Sezione 3. Capitolo 4
some-alt