Ce code présente une variante de tri à bulles.
L'objectif n'est pas le tri en lui même mais la structuration du code d'une manière à séparer les responsabilités et de respecter le principe "SRP" (voir ici).
Ce code utilise le design pattern "Observer" pour garantir cette séparation. L'utilisation de ce design pattern permet à la classe Tri de ne faire que le tri; elle signale ses actions au Listener qui doit (dans ce cas) garantir l'affichage de l'état d'avancement de l'opération.
Un petit système d'événements a été créé pour rendre le code plus lisible.
Vous pouvez retrouver le code dans sur SourceForge.
jeudi 11 avril 2019
mercredi 3 avril 2019
[Java][Débutant] Lire un fichier texte en une seule ligne de code en Java
La manipulation des fichiers textes est une tâche quotidienne. Ainsi, pouvoir lire un fichier texte en une seule ligne de code constitue un plus qu'une plateforme peut offrir à ses développeurs.
Java est l'une des plateformes connues pour compliquer les choses pour ses utilisateurs. En effet, Java est respecté pour être rigoureux, précis et fiable. Mais cela ne vient pas sans prix : pendant les première version, lire un fichier texte en une seule ligne de code était un peu compliqué et impliquait plusieurs objets.
Dans cet exemple, nous allons voir comment lire le contenu d'un fichier texte en une seule ligne de code et cela en utilisant deux API et en obtenant deux formats possibles.
Les deux API sont :
Néanmoins, cette classe n'offre pas une méthode pour lire directement en String, ainsi, il faut lire en Byte et faire la conversion. Le code pour la lecture de tout un fichier sous forme d'une seule chaîne de caractères sera :
La lecture sous forme d'une liste de chaîne de caractères est plus simple grâce à la méthode .readAllLines() :
Le résultat d'exécution sera comme suit (un fichier Exemple.txt est fourni avec le code, cette capture montre la moitié exacte de l'exécution, notez la différence entre la première partie qui affiche une seule chaîne de caractères et la deuxième partie qui affiche une liste entre les [ ]) :
Vous pouvez télécharger le code complet, y compris le jar de lApache Commons IO (version actuelle : 2.6) et le fichier Exemple utilisé dans la capture ci-dessus par :
Java est l'une des plateformes connues pour compliquer les choses pour ses utilisateurs. En effet, Java est respecté pour être rigoureux, précis et fiable. Mais cela ne vient pas sans prix : pendant les première version, lire un fichier texte en une seule ligne de code était un peu compliqué et impliquait plusieurs objets.
Dans cet exemple, nous allons voir comment lire le contenu d'un fichier texte en une seule ligne de code et cela en utilisant deux API et en obtenant deux formats possibles.
Les deux API sont :
- java.nio : disponible depuis Java 4 mais vraiment efficace depuis Java 8.
- Apache Commons IO : créée pour faciliter les Entrées/Sorites sous Java.
- Lire tout le contenu dans une seule chaîne (String),
- Lire le contenu ligne par ligne (List<String>).
java.nio :
La lecture se base une méthode "static", cela minimise la création des objets. La classe d'entrée est la classe Files. Cette dernière offre un ensemble de méthodes statiques pour effectuer différentes opérations communes.Néanmoins, cette classe n'offre pas une méthode pour lire directement en String, ainsi, il faut lire en Byte et faire la conversion. Le code pour la lecture de tout un fichier sous forme d'une seule chaîne de caractères sera :
public static String lireUneChaine(String fichier) throws IOException{ return new String(Files.readAllBytes(Paths.get(fichier))); }
La lecture sous forme d'une liste de chaîne de caractères est plus simple grâce à la méthode .readAllLines() :
public static List<String> lirePlusieursChaines(String fichier) throws IOException{ return Files.readAllLines(Paths.get(fichier)); }
Apache Commons IO :
Apache Commons IO fait partie de la famille Apache Commons qui fournit des outils pour simplifier des tâches fréquentes en Java et que le JDK ne les offre (offrait) pas. La classe d'entrée est IOUtils, et comme pour Files, elle fournit un ensemble de méthodes "static" pour simplifier l'utilisation. Meilleur encore, elle se base sur le package java.io, ainsi, l'ancienne documentation et les anciennes appellations restent valables. Les deux approches de lectures (une seule chaîne ou bien une liste de chaînes) sont offertes par des méthodes dédiées :public static String lireUneChaine(String fichier) throws IOException{ return IOUtils.toString(new FileReader(new File(fichier))); }
public static List<String> lirePlusieursChaines(String fichier) throws IOException{ return IOUtils.readLines(new FileReader(new File(fichier))); }
Le résultat d'exécution sera comme suit (un fichier Exemple.txt est fourni avec le code, cette capture montre la moitié exacte de l'exécution, notez la différence entre la première partie qui affiche une seule chaîne de caractères et la deuxième partie qui affiche une liste entre les [ ]) :
Vous pouvez télécharger le code complet, y compris le jar de lApache Commons IO (version actuelle : 2.6) et le fichier Exemple utilisé dans la capture ci-dessus par :
Pays/territoire :
Jijel, Algérie
Inscription à :
Articles (Atom)