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
1234567891011121314151617181920212223242526package 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
1234567891011121314151617181920212223242526272829package 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
123456789101112package 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
12345678910111213package 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 ?
Merci pour vos commentaires !
Demandez à l'IA
Demandez à l'IA
Posez n'importe quelle question ou essayez l'une des questions suggérées pour commencer notre discussion