Récupérer un float à partir d'un HashMap
Fermé
startech
Messages postés
12
Date d'inscription
vendredi 26 mars 2010
Statut
Membre
Dernière intervention
14 octobre 2013
-
14 oct. 2013 à 08:55
KX Messages postés 16753 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 25 novembre 2024 - 14 oct. 2013 à 19:42
KX Messages postés 16753 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 25 novembre 2024 - 14 oct. 2013 à 19:42
A voir également:
- Map to float java
- Waptrick java football - Télécharger - Jeux vidéo
- Google map satellite gratuit - Guide
- Jeux java itel football - Télécharger - Jeux vidéo
- Java apk - Télécharger - Langages
- Qwerty to azerty - Guide
1 réponse
KX
Messages postés
16753
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
25 novembre 2024
3 019
14 oct. 2013 à 19:42
14 oct. 2013 à 19:42
Normalement les Map doivent être typées, tu ne devrais donc pas pouvoir mettre tout et n'importe quoi dans ta Map... même si tu peux être très large dans le choix des types en mettant Object par exemple.
Remarque : les noms de variables ne devraient pas contenir de caractères _
Alors là, je dis STOP !
Déjà tu pourrais utiliser une boucle for each, ce serait beaucoup plus clair que ta boucle while sur tes itérateurs :
Sauf que les maps ne servent pas à être itérées de la sorte, on dirait que tu fais de la manipulation de tableau, alors que ça n'a rien à voir.
Déjà parce que tu ne sais pas dans quel ordre tu vas récupérer les résultats dans ta map, du coup quand la clé sera "montant" tu fais
En plus parce que le temps d'accès aux données des maps est en O(1), donc itérer sur les maps va faire du O(n) totalement inutile...
C'est quand même nettement plus simple comme ça, non ?
Remarque : ça aussi c'est moche :
Si ta fonction ne fait aucun calcul et que son seul rôle est de renvoyer une constante, alors autant déclarer la constante directement !
private HashMap<String,Object> info()
{
HashMap<String,Object> tab = new HashMap<String,Object>();
Date d=Date.valueOf(date_c.getText());
if (date_r.getText().isEmpty())
d1 = null;
else
d1=Date.valueOf(date_r.getText());
int num = Integer.parseInt(numero.getText());
float mon = Float.parseFloat(montant.getText());
int in = Integer.parseInt(inpitation.getText());
tab.put("date1", d) ;
tab.put("date2", d1);
tab.put("numero", num);
tab.put("libelle", libelle.getText());
tab.put("montant", mon);
tab.put("inpitation", in);
return tab;
}
Remarque : les noms de variables ne devraient pas contenir de caractères _
Iterator i = s.entrySet().iterator() ;
while(i.hasNext()){
Map.Entry entry = (Map.Entry) i.next();
if(entry.getKey().equals("montant"))
prp.setFloat(z,Float.parseFloat((String) entry.getValue())) ;
Alors là, je dis STOP !
Déjà tu pourrais utiliser une boucle for each, ce serait beaucoup plus clair que ta boucle while sur tes itérateurs :
for (Map.Entry entry : s.entrySet())
if((entry.getKey().equals("date1"))
Sauf que les maps ne servent pas à être itérées de la sorte, on dirait que tu fais de la manipulation de tableau, alors que ça n'a rien à voir.
Déjà parce que tu ne sais pas dans quel ordre tu vas récupérer les résultats dans ta map, du coup quand la clé sera "montant" tu fais
prp.setFloat(z,sans avoir aucune idée de la valeur de z, or celle-ci doit être absolument 5 sinon tu vas mettre n'importe quoi dans ta requête SQL...
En plus parce que le temps d'accès aux données des maps est en O(1), donc itérer sur les maps va faire du O(n) totalement inutile...
Date date1 = (Date) s.get("date1");
Date date2 = (Date) s.get("date1");
int num = (int) s.get("numero");
String libelle = (String) s.get("libelle");
float montant = (float) s.get("montant");
int impitation = (int) s.get("impitation");
PreparedStatement prp = connexion.prepareStatement(query) ;
prp.setDate(1,date1);
prp.setDate(2,date2);
prp.setInt(3,num);
prp.setString(4,libelle);
prp.setFloat(5,montant);
prp.setInt(6,impitation);
C'est quand même nettement plus simple comme ça, non ?
Remarque : ça aussi c'est moche :
private String inse(){
String query = new String("INSERT INTO banque ('date_cheque','date_releve','cheque','libelle','montant','inpitation') VALUES (?,?,?,?,?,?)");
return query;
}
Si ta fonction ne fait aucun calcul et que son seul rôle est de renvoyer une constante, alors autant déclarer la constante directement !
private static final String INSE = "INSERT INTO banque ('date_cheque', 'date_releve', 'cheque', 'libelle', 'montant', 'inpitation') VALUES (?,?,?,?,?,?)";