[JAVA] Texte-> Mots-> ArrayList =>OutOfMe

hyper -  
nobie-cs Messages postés 157 Statut Membre -
Bonjour,

je fait appel à votre aide car je bloque sur une partide de code:

mon but: Extraire d'un fichier texte les mots qui le composent.
Placer ces mots dans un tableau.
(après : dans ce même tableau, y mettre le numéro de la ligne à laquelle on peut trouver ce mot.

Mon code:
----------------------------------------------------------
import java.util.*;
import java.io.*;

public class IndexElem {

public void main (String [] args) {

try{

//Creation du flux à partix d'un petit fichier txt de 3 lignes
BufferedReader lecteur = new BufferedReader (new FileReader ("Test.txt"));

//Creation du tableau de taille variable
ArrayList <String[]> tab = new ArrayList <String[]> ();
String ligne = lecteur.readLine ();

//Decompo des lignes en mots et insertion dans le ArrayList<String>
while (ligne != null) {

String [] littleTab = ligne.split (",");

tab.add (littleTab);
}

//Imprime notre ArrayList compose des mots du texte.
System.out.println (tab);}

catch(IOException e) {}
}
}
----------------------------------------------------------------------------------------------------------

->A la compilation, pas de problème.
-> A l'exécution, pour appliquer la méthode main à l'objet créé, java prend un temps monstruex (30-40s) pour finir sur un OutOfMemoryError en surlignant la ligne avec le split !?!?

Vous avez des idées de ce qui pourrait clocher ?
A voir également:

3 réponses

Pacorabanix Messages postés 4122 Date d'inscription   Statut Membre Dernière intervention   663
 
while (ligne != null) {

String [] littleTab = ligne.split (",");

tab.add (littleTab);
}

ligne n'est jamais null, non ? Tu ajoutes des millions de fois la même chose il me semble... jusqu'à ce que tu n'ai plus de ram :D
0
toma_f_1 Messages postés 94 Statut Membre 7
 
...en effet tu travaille toujours sur la même "ligne" donc forcément != null.

trouve le moyen de passer à la ligne suivante dans ton while. et par contre je pense pas qu'un string puisse être null. mais il peut être = "". mais cela ne va pas si par exemple ton texte contient un saut de ligne. il te faudrait une boucle du genre : "tant qu'on a pas atteint la fin du fichier" (end of file)
0
nobie-cs Messages postés 157 Statut Membre 17
 
en plus de se que Ms. Pacorabanix, a déjà dit ta pas besoin besoin d'une boucle While (ligne != null)
note que String [] littleTab = ligne.split (","); va mettre tout la ligne que ta lu dans un tableau String , dans se cas ta besoin de boucle sur se tableau pour ajouter les éléments dans la liste
0