Bonjour;
je veux créer une matrice dynamique de type HashMap:
HashMap<String,Double>[][] graphPrec = {{ new HashMap<String,Double> }};
il me signale cette erreur:
Cannot create a generic array of HashMap<String,Double>
Heeeeeeeeeeelp![]()
Bonjour;
je veux créer une matrice dynamique de type HashMap:
HashMap<String,Double>[][] graphPrec = {{ new HashMap<String,Double> }};
il me signale cette erreur:
Cannot create a generic array of HashMap<String,Double>
Heeeeeeeeeeelp![]()
C'est une limitation des tableaux en java. On ne peux pas créer des tableaux avec des types génériques. Parceque le typage n'est pas utilisé pour le tableau.
On ne peux donc pas faire new T[] avec T un type générique, ni new X<Y>[]. Et c'est implicitement ce que fait votre code.
une solution, qui ne déclenche qu'un warning:
Mais c'est pas parfait :s. C'est une plainte sur les generics depuis le début, cette histoire de tableaux. Espérons que oracle corrigera ça avec la réification des classes génériques qu'on nous promet pour java 8
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 HashMap<String,Double> table[][] = new HashMap[][]{{new HashMap<String,Double>()}};
Bonjour tchize;
Merciiiiiiiiii pour votre réponse.
ça passe, on ne me signale plus l'erreur.
Le problème mnt est lorsque j'essaye de remplir qlq ligne pour tester:
((HashMap<String, Double>) graphPrec[0][0]).put("T01", 3.2);
((HashMap<String, Double>) graphPrec[0][1]).put("T02", 1.2);
ça compile mais à l’exécution ça déclenche l'exception suivante au niveau du remplissage de la 2em case:
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 1
c'est normal, vous n'avez créé qu'un tableau de taille [1][1], il n'y a pas de deuxième éléments.
Au passage votre structure est bizarre, vous essayez de faire quoi avec ça?
En fait; Je veux définir un graphe de précédence des tâches.
une case de la matrice est un dictionnaire {refTâche : duréeTâche}
une ligne de la matrice est composée de deux cases:
- la case 0: la tâche Courante
- la case 1: la tâche Suivante
(Je passe cette structure à une fonction qui calcule le temps de repos entre les tâches)
vous n'avez pas d'idées sur une structure plus simple à implémenter qui répond à ce que je viens d'expliquer ?![]()
Partager