[Collections] - Hash de Hash - Méthode plus simple
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:
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:
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);
}
}
} |