Problème au niveau du remplissage de HashMap
Bonjour
J'ai le code suivant qui permet de remplir un hashmap par des String:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
| @Override
public List<Offre> rechercheRapide(String CHAMP_TYPE_OFFRE, String CHAMP_VILLE, String CHAMP_REGION, String CHAMP_SECTEUR,String typeOffre, String ville, String region, String secteur) throws DAOException {
Map myMap=new java.util.HashMap();
// Ajout des objet dans le tableau associatif
myMap.put(CHAMP_TYPE_OFFRE, typeOffre);
myMap.put(CHAMP_VILLE, ville);
myMap.put(CHAMP_REGION, region);
myMap.put(CHAMP_SECTEUR, secteur);
// Afficher le contenu du MAP
Set listKeys=myMap.keySet(); // Obtenir la liste des clés
Iterator iterateur=listKeys.iterator();
// Parcourir les clés et afficher les entrées de chaque clé;
String s="select * from Offre where ";
while(iterateur.hasNext())
{
Object key= iterateur.next();
s=s+(String)key+" = ? and ";
}
System.out.println("la requete est: "+s);
...
} |
Ce résultat m'affiche:
Code:
la requete est: select * from Offre where region = ? and type_offre = ? and ville = ? and secteur = ? and
region vient en 1er, suivi de type_offre, ville et secteur.
Pourtant lorsque j'ajoute les valeurs dans la Map, c'est type_offre qui est censé venir en 1er, suivi de ville, region et secteur.
Même dans ma Servlet l'ordre type_offre,ville, region, secteur est respecté:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36
| public class RechercheRapide extends HttpServlet {
private static final String CHAMP_TYPE_OFFRE = "type_offre";
private static final String CHAMP_VILLE = "ville";
private static final String CHAMP_REGION = "region";
private static final String CHAMP_SECTEUR = "secteur";
public void doPost( HttpServletRequest request, HttpServletResponse response ) throws ServletException, IOException {
HttpSession session = request.getSession();
String typeOffre = getValeurChamp( request, CHAMP_TYPE_OFFRE );
String ville = getValeurChamp( request, CHAMP_VILLE );
String region = getValeurChamp( request, CHAMP_REGION );
String secteur = getValeurChamp( request, CHAMP_SECTEUR);
List<Offre> listeOffres = offreDao.rechercheRapide(CHAMP_TYPE_OFFRE, CHAMP_VILLE, CHAMP_REGION, CHAMP_SECTEUR, typeOffre, ville, region, secteur);
Map<Long, Offre> mapListeOffres = new HashMap<Long, Offre>();
for ( Offre offre : listeOffres )
{
mapListeOffres.put( offre.getId(), offre );
}
session.setAttribute( ATT_SESSION_OFF, mapListeOffres );
}
private static String getValeurChamp( HttpServletRequest request, String nomChamp ) {
String valeur = request.getParameter( nomChamp );
if ( valeur == null || valeur.trim().length() == 0 ) {
return null;
} else {
return valeur;
}
}
} |
Donc je ne comprends pas pourquoi j'ai :
Code:
la requete est: select * from Offre where region = ? and type_offre = ? and ville = ? and secteur = ? and
Au lieu de:
Code:
la requete est: select * from Offre where type_offre = ? and ville = ? and region = ? and secteur = ? and
Merci