Créer une liste à partir d'un fichier texte [Fermé]

Signaler
-
Messages postés
15987
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
12 août 2020
-
Bonjour,

j'ai à ma disposition un fichier "bloc note" avec quelque chose comme 22000 mots

j'aimerais modifier la situation pour obtenir dans mon code une liste contenant tous ces mots sans avoir à tous les copier coller ce qui rendrait mon code beaucoup trop long

j'avais pensé au départ utiliser la fonction

String[] liste = new String[] {

avez vous d'autres alternatives ?

merci

Configuration: Windows / Edge 16.16299

1 réponse

Messages postés
15987
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
12 août 2020
2 652
Bonjour,

Comment est organisé ton fichier ?

Par exemple avec un mot par ligne :
List<String> liste = Files.readAllLines(Paths.get("C:/fichier.txt"));
1
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 58196 internautes nous ont dit merci ce mois-ci

Messages postés
15987
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
12 août 2020
2 652 > Lu
Techniquement c'est déjà une ArrayList, mais de toute façon de quoi aurais-tu besoin dans une ArrayList qui n'existe pas dans une List ?
de prendre un mot au hasard dans la liste et ensuite d'autres choses en fonction de la taille du mot
Messages postés
15987
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
12 août 2020
2 652 > Lu
Donc List<String> suffit, tu n'as pas besoin de manipuler un ArrayList spécifiquement.
Par contre est ce qu'on peut ajouter un paramètre de sélection quand on crée la liste ?
Le but final serait d'utiliser uniquement les mots de plus de 7 lettres
J'hésite entre :
tirer de manière aléatoire jusqu'à ce que ce soit le bon nombre de lettre
créer une deuxième liste à partir de la première

Dans la suite du programme l'utilisateur va entrer un autre mot et on doit vérifier si le mot est dans la liste initiale avant d'effectuer d'autres opérations... J'essaie de faire le programme le plus optimisé possible et du coup je ne sais pas vraiment laquelle des solutions est la meilleure...
Messages postés
15987
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
12 août 2020
2 652 > Lu
Voici le plus optimisé (en partant du principe que tu as 22 000 mots maximum)

import java.io.IOException;
import java.nio.file.*;
import java.util.*;
import java.util.Random;
import java.util.stream.Collectors;

List<String> words = Files.lines(Paths.get("C:/fichier.txt"))
    .filter(s -> s.length() >= 7)
    .sorted()
    .collect(Collectors.toCollection(() -> new ArrayList<>(22_000)));

int random = new Random().nextInt(words.size());
String word = words.get(random);

int insertionPoint = Collections.binarySearch(words, word);