chercher les valeurs d'une liste dans une map
Bonsoir,
J'ai un fichier texte (il contient un mot sur chaque ligne), je parcours ce dernier et à chaque ligne je fais un traitement sur ce mot. Puis, je transforme ce mot en une suite de sous mot (dans une liste: ArrayList<String> )
D'autre part j'ai une map qui contient l'ensemble de sous chaine de tout le fichier LinkedHashMap<String, Integer[]> = une chaine (key) + un tableau d'entier.
Mon objectif , c'est de parcourir ces deux structures de données (map et liste), pour chaque sous chaine de la liste , je cherche son existance dans le map. Un compteur s'incrémente et un calcul se fait (le produit des trois fonctions mentionnées)pour chaque sous mot.
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
|
public static void GenerationFicher(String fichier, int x, LinkedHashMap<String, Integer[]> m, BufferedWriter pw) throws FileNotFoundException, IOException {
ArrayList<String> motExtré = new ArrayList<>();
Scanner sc = new Scanner(new File(fichier));
String s = "";
while (sc.hasNextLine()) {
String line = sc.nextLine();
String mot = sousChaine(line);
motExtré = ExtraNgram(mot, x);
String ss = "";
int compteurGram = 1;
//comparer le contenu de la liste et de la map
for (String me : motExtré) {
for (Map.Entry<String, Integer[]> e : m.entrySet()) {
if (me.equals(e.getKey())) {
s = compteurGram + ":" + (nbrFqGram(mot, me) * chiffreGram(me) * positionGram(mot, me));
compteurGram++;
}
ss = ss + " " + s;
}
ss = target(line) + ss + " #" + mot;
pw.write(ss);
pw.newLine();
}
}
} |
Mon problème c'est que le traitement éffectué se fait seulement pour la première sous chaine du mot (dans notre cas la taille de sous chaine =1)
la taille peut vari entre 1 et 3 carcatères.
Pour chaque ligne du fichier : par exemple pour le mot: bjr
Résultat souhaîté: -1 1:2 2:4 3:1 #bjr
Résultat obtenu: -1 1:2 #bjr
Donc le traitementest fait seulement pour le prmier gram (dans nore cas 1 seul caracteres) --> b
Merci de m'aider à resoudre ce problème (normalement il réside au niveau de l'une des boucles for)