Problème HashMap suit à requête SQL
Résolu
Utilisateur anonyme
-
Utilisateur anonyme -
Utilisateur anonyme -
Bonjour à tous!
Je vais commencer par vous présenter mon code, je vous expliquerai le soucis ensuite.
public HashMap<Cartouche, Integer> readAll() {
HashMap<Cartouche, Integer> lesRes = new HashMap();
Cartouche cart;
try {
Statement state = this.conn.createStatement();
String query = "SELECT count(fk_ref) as nb, dte_achat, dte_peremption, fk_ref "
+ "FROM cartouche "
+ "GROUP BY dte_peremption, fk_ref, dte_achat "
+ "ORDER BY dte_peremption, fk_ref, dte_achat;";
ResultSet result = state.executeQuery(query);
while (result.next()) {
cart = new Cartouche(result.getDate("dte_achat"),
result.getDate("dte_peremption"),
result.getString("fk_ref")
);
lesRes.put(cart, result.getInt("nb"));
}
} catch (Exception e) {
System.out.println(e);
}
for (Cartouche id : lesRes.keySet()) {
System.out.println(id.getdatePeremption() + "\n");
}
return lesRes;
}
Donc ici, c'est ma méthode, et mon soucis, c'est que ma HashMap ne se remplit pas avec les dte_peremption ordonnées, mais de façon aléatoire, alors que je fais bien mon ORDER BY dans ma requête.
De plus, lorsque je saisis cette requête dans phpmyadmin, aucun soucis, le résultat retourné est bien ordonné.
Quelqu'un a-t-il une idée?
Merci d'avance à tous,
f4b3n.
Je vais commencer par vous présenter mon code, je vous expliquerai le soucis ensuite.
public HashMap<Cartouche, Integer> readAll() {
HashMap<Cartouche, Integer> lesRes = new HashMap();
Cartouche cart;
try {
Statement state = this.conn.createStatement();
String query = "SELECT count(fk_ref) as nb, dte_achat, dte_peremption, fk_ref "
+ "FROM cartouche "
+ "GROUP BY dte_peremption, fk_ref, dte_achat "
+ "ORDER BY dte_peremption, fk_ref, dte_achat;";
ResultSet result = state.executeQuery(query);
while (result.next()) {
cart = new Cartouche(result.getDate("dte_achat"),
result.getDate("dte_peremption"),
result.getString("fk_ref")
);
lesRes.put(cart, result.getInt("nb"));
}
} catch (Exception e) {
System.out.println(e);
}
for (Cartouche id : lesRes.keySet()) {
System.out.println(id.getdatePeremption() + "\n");
}
return lesRes;
}
Donc ici, c'est ma méthode, et mon soucis, c'est que ma HashMap ne se remplit pas avec les dte_peremption ordonnées, mais de façon aléatoire, alors que je fais bien mon ORDER BY dans ma requête.
De plus, lorsque je saisis cette requête dans phpmyadmin, aucun soucis, le résultat retourné est bien ordonné.
Quelqu'un a-t-il une idée?
Merci d'avance à tous,
f4b3n.
A voir également:
- Problème HashMap suit à requête SQL
- Comment savoir qui me suit sur facebook - Guide
- Chaque paragraphe doit être espacé de 0,42 cm ou 12 pt du paragraphe qui suit - Guide
- Logiciel sql - Télécharger - Bases de données
- Peut on voir qui nous suit sur le bon coin - Forum Réseaux sociaux
- Word numérotation titre 2 ne suit pas titre 1 ✓ - Forum Word
1 réponse
Bonjour,
Une HashMap n'est pas ordonnée, c'est une Map quelconque, si tu veux une map ordonnée (SortedMap) tu peux utiliser un TreeMap.
Remarque : du coup il est inutile de faire un ORDER BY...
Remarque : pour que ça fonctionne il est nécessaire d'avoir
Une HashMap n'est pas ordonnée, c'est une Map quelconque, si tu veux une map ordonnée (SortedMap) tu peux utiliser un TreeMap.
Remarque : du coup il est inutile de faire un ORDER BY...
public SortedMap<Cartouche, Integer> readAll() { SortedMap<Cartouche, Integer> lesRes = new TreeMap<Cartouche, Integer>();
Remarque : pour que ça fonctionne il est nécessaire d'avoir
Cartouche implements Comparable<Cartouche>sinon Java ne saura pas comment trier les objets Cartouche.
java.lang.Comparable
Bonne soirée et merci!