et en 1.4 il n'y a ni vector ni ArrayList ?
Si elles existent, mais les génériques non (cad le <String> )
Hey, this is mine. That's mine. All this is mine. I'm claiming all this as mine. Except that bit. I don't want that bit. But all the rest of this is mine. Hey, this has been a really good day. I've eaten five times, I've slept six times, and I've made a lot of things mine. Tomorrow, I'm gonna see if I can't have sex with something.
essais sans les génériques :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 List listeLignes=new ArrayList();
Concernant ce problème : "sélectionner une ligne au hasard dans un fichier", il y a une solution très élégante et quasi miraculeuse qui ne nécessite de lire le fichier qu'une seule fois, sans devoir tout stocker, il suffit d'utiliser l'algorithme suivant.
Et après cela, LigneSelectionnee est une ligne choisi de façon équiprobable dans le Fichier... Faites le calcul vous même !
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 Ouvrir Fichier Int i <- 1; String LigneSelectionnee <- ""; Tant que Fichier non vide : String Ligne <- LireLigne Fichier; Si Random(i) = 1 : // Avec une probabilité de 1/i LigneSelectionnee <- Ligne; i++;
C'est à mon sens la meilleure solution.
--
Jedaï
Ca dépend si on ne veut faire qu'une seule fois un "random" pour choisir une ligne de fichier... Si c'est à faire plein defois, mieux vaut stocker le fichier en mémoire, s'il n'est pas trop gros (les accès disque sont coûteux)...Envoyé par Jedai
Je crois que tu n'as pas compris... Avec ma solution, le numéro de la ligne qu'on obtient à la fin est équiprobable parmi l'ensemble des lignes du document, mais on ne lit le document qu'une fois. C'est bien meilleur que de stocker l'intégralité du document dans un tableau puis de faire un random. Quant aux accès disque, n'oublie pas que de toute façon, on emploie un tampon (via une classe qui le gère en interne), il n'y a donc que très peu d'accès disque, en tout cas pas plus que dans une autre méthode.Envoyé par ®om
Le fait que je fasse plusieurs fois appel à random n'a rien à voir avec la lecture du document.
--
Jedaï
Certes, mais si par exemple, il veut tirer au hasard 500 fois une ligne du fichier, il vaut mieux parcourir une fois le fichier et stocker les lignes dans un tableau, puis récupérer directement dans le tableau la ligne qui correspond (parcourir un fichier 500 fois, même s'il est en cache, est moins efficace qu'un accès en O(1) (directement dans le tableau)).Envoyé par Jedai
Certes, j'avais mal compris ce que tu voulais dire. Dans ce cas évidemment, la solution du tableau est nettement plus adaptée, sauf s'il s'agit d'un fichier vraiment gros.Envoyé par ®om
--
Jedaï
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager