Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Apprendre Map Avec D'autres Structures De Données | Section
Structures de Données Fondamentales en Java

Map Avec D'autres Structures De Données

Glissez pour afficher le menu

En général, il n’y a pas grand-chose de plus à dire sur les maps. Le fait qu’il s’agisse d’une structure de données qui stocke des données selon le principe clé-valeur est suffisant. Mais que faire si vous souhaitez tenter une petite aventure et utiliser une structure de données comme un ArrayList en tant que valeur dans la map ?

Passage de structures de données comme valeurs dans une map

Il se peut que vous ayez trop peu de collisions dans la hashmap, et que vous souhaitiez stocker les données d’une manière encore plus particulière.

Main.java

Main.java

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

Voici un exemple de création d'une structure de données qui stocke des informations sur une entreprise spécifique. Cette approche est parfois utilisée lors de la manipulation de bases de données, mais il est conseillé de ne pas en abuser, car la récupération des données à partir de telles structures de données peut s'avérer complexe. Par exemple, supposons que l'on souhaite récupérer le marketeur à l'indice 1.

Main.java

Main.java

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

À première vue, cela ne semble pas compliqué. Il suffit simplement d'utiliser la méthode une fois de plus. Cependant, en programmation, il est essentiel d'éviter le codage en dur.

Le codage en dur est déconseillé, et il doit être évité autant que possible. Voici un exemple de codage en dur, que nous allons ensuite corriger :

Main.java

Main.java

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

Comme vous pouvez le constater, il y a du codage en dur dans le code ci-dessus. Lors de la définition de la remise, nous utilisons un nombre brut. Il est préférable de stocker cette remise dans une variable afin de réutiliser cette valeur ultérieurement. Améliorons le code ci-dessus :

Main.java

Main.java

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

De cette manière, nous obtenons une variable contenant la valeur de la remise, et dans un grand programme à l'avenir, il suffirait de modifier la valeur de cette unique variable.

Si nous l'avions codée en dur, il aurait fallu modifier la valeur à chaque occurrence, ce qui augmente considérablement le temps nécessaire pour améliorer ou modifier le code.

Résumé

En résumé, on peut dire que dans les structures de données, divers types de données, y compris d'autres structures de données, peuvent être utilisés. Cela ajoute de la commodité à l'utilisation de ces structures de données et de la flexibilité à votre application. Cependant, il ne faut pas oublier la complexité algorithmique, car il s'agit d'un paramètre crucial lors de l'écriture d'une application. Lorsque l'on utilise des structures de données à l'intérieur d'autres structures de données, il est assez facile de commettre des erreurs et de compliquer considérablement l'exécution d'une opération spécifique.

Restez vigilant à ce sujet, et votre code sera excellent !

1. Quelle est la complexité temporelle d’un algorithme qui parcourt un tableau de taille n et effectue une opération en temps constant sur chaque élément ?

2. Quel est le principal inconvénient de coder en dur des valeurs directement dans le code ?

3. Étant donné deux algorithmes avec des complexités temporelles O(n log n) et O(n^2), lequel est généralement plus efficace pour de grandes tailles d'entrée ?

question mark

Quelle est la complexité temporelle d’un algorithme qui parcourt un tableau de taille n et effectue une opération en temps constant sur chaque élément ?

Sélectionnez la réponse correcte

question mark

Quel est le principal inconvénient de coder en dur des valeurs directement dans le code ?

Sélectionnez la réponse correcte

question mark

Étant donné deux algorithmes avec des complexités temporelles O(n log n) et O(n^2), lequel est généralement plus efficace pour de grandes tailles d'entrée ?

Sélectionnez la réponse correcte

Tout était clair ?

Comment pouvons-nous l'améliorer ?

Merci pour vos commentaires !

Section 1. Chapitre 16

Demandez à l'IA

expand

Demandez à l'IA

ChatGPT

Posez n'importe quelle question ou essayez l'une des questions suggérées pour commencer notre discussion

Section 1. Chapitre 16
some-alt