Bonjour à tous,
Et au passage bonne fêtes de fin d'années à tous.

Je recherche un moyen plus simplde de faire un hash de hash.
Voilà un exemple de structure que j'aimerai obtenir :
Un hash dans lequel chaque valeur est aussi un hash.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
{shipping={colissimo=500, chronopost=500}, brand={xx=1000},  payment={CHEQUE=750, ESPECE=750, CB=750}}
J'ai un bout de code qui me permet d'obtenit le hash de hash ci-dessus, mais je ne suis vraiment pas satisfait des performances.
est-ce qu'il existerait une méthode plus simple et plus performante
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
37
38
39
40
41
 
	    int maxDoc = Math.min(hits.length(), 1000);
	    int i ;
	    start = new Date().getTime();
 
            // cette Map me sert à construire le Hash "interne"
	    Map map = new HashMap();
           // Ma structure finale Hash de Hash
	    Map complexMap = new HashMap();
 
	    Integer ONE = new Integer(1);
 
	    for (i = 0; i < maxDoc; i++) {
	      Document doc = hits.doc(i);	      
	      for(Enumeration fields = doc.fields(); fields.hasMoreElements();) {
		      Field field = (Field)fields.nextElement();                  
		      String name = field.name();
 
		      // Ici je récupère la map correspondant à la clé courante
                      map = (Map)complexMap.get(name);
		      if (map == null) {
		           map = new HashMap();
		      }
	    	  String [] keys = doc.getValues(name);
		      if (keys != null) {
			      for (int j = 0; j < keys.length; j++) {
					Integer frequency = (Integer)map.get(keys[j]);
					if (frequency == null) {
						frequency = ONE;
					} else {
						int value = frequency.intValue();
						frequency = new Integer(value + 1);
					}
				      // Je met à jour la fréquence de la clé courante
                                      map.put(keys[j], frequency);
 
                                      // Je met à jour mon hash de hash
				      complexMap.put(name, map);
			      }
		      }	    	  
	      }