y a plein d'erreurs:
d'abord, je ne sais pas si c'est voulu, mais ta clé tu lui met des valeur qui n'ont rien à voir avec la fonction (tu lui met id_edge et datestring alors qu'on cherche val et mot)
ensuite, une list est une mauvais clé pour un Map, la Map exige que la clé soit immutable. Bon on peux garder une liste, mais faut pas la changer après l'avir mise en clé alors.
enfin, a chaque appel, tu rajoute des valeur dans la même liste, alors que normalement tu devrais avoir une nouvelle liste à chaque fois. En effet, actuellement tu fait cecil
List = [id_edge,datestring], calcul, ajout dans la map
ensuite deuxième appel
List = [id_edge,datestring,id_edge,datestring], existe pas dans la map, recalcul, ajout
ensuite troisième appel
List = [id_edge,datestring,id_edge,datestring,id_edge,datestring], existe pas dans la map, recalcul, ajout
etc etc :)
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| private static LRUMap Map = new LRUMap() ;
public static double loadSelectedval(Connection conn, int val, String mot) throws SQLException, NotFoundException {
List list = new ArrayList<Object>();
list.add(val);
list.add(mot);
list = Collections.unmodifiableList(list); // pour éviter les emmerdes
if (!Map.contains(list)){
.... calcul de reslutat, de type double
map.put(list,resultat); // et stockage
}
return (Double)map.get(list);
} |