Traitements sur liste d'éléments

import java.util.LinkedList;
import java.util.Scanner;

/**
 * Cette classe va créer et utiliser des listes avec les opérations les plus
 * courantes (et donc, souvent, les plus élémentaires).
 *
 * Documentation Java : http://java.sun.com/javase/6/docs/api/java/util/LinkedList.html
 *
 * Une bonne théorie des listes liées (LinkedList) se trouve ici :
 * 		http://en.wikipedia.org/wiki/Linked_list
 * Cette page couvre une bonne partie de la théorie sur les listes et
 * contient malheureusement des informations trop "pointues". Il faudra
 * donc simplement se contenter de lire le début et d'essayer de le comprendre
 * (surtout le schéma !).
 *
 * Nous allons travailler avec une liste qui ne contient que des objets
 * de type String (on aurait pu travailler avec des Integer ou autres).
 */
public class ManipulationListes {
	public static void main(String[] args) {
		String s1="s4A2emEd",s2="phAc7ujA",s3="cathe5uK",s4="t3UTHAbr",s5="rabUP4zA";

		String[] tabPasswords = new String[5]; // tableau de String (5 entrées mais vides)
		LinkedList<String> listPasswords = new LinkedList<String>(); // liste vide (0 entrée)

		// remplissage manuel d'un tableau de String avec des String...
		tabPasswords[0] = s1;
		tabPasswords[1] = s2;
		tabPasswords[2] = s3;
		tabPasswords[3] = s4;
		tabPasswords[4] = s5;

		// remplissage manuel d'une liste de String avec des String...
		listPasswords.add(s1);
		listPasswords.add(s2);
		listPasswords.add(s3);
		listPasswords.add(s4);
		listPasswords.add(s5);
		/* L'utilisation de la méthode add(String e) se devine en lisant la documentation
		 * et en se posant la question suivante : "comment vais-je pouvoir ajouter un élément
		 * dans ma liste ?" : la méthode add est la réponse.
		 *
		 * Supposons à présent que les 5 String sont des mots de passe récupérés depuis une
		 * base de données (ou peu importe). L'utilisateur va entrer son mot de passe dans
		 * la console et nous allons voir s'il est bien parmi ceux que nous connaissons.
		 */
		Scanner monScanner = new Scanner(System.in);
		/* Création de l'objet Scanner.
		 * Documation : http://java.sun.com/javase/6/docs/api/java/util/Scanner.html
		 */
		System.out.println("Entrez un mot de passe :");
		String motDePasse = monScanner.next(); // next() va bien chercher le String, puis on le stocke

		boolean correctTab = false; // cette variable servira à retenir si le MDP est correct ou non
		boolean correctList = false; // idem, mais pour la liste

		// version tableau
		for(int i = 0; i < tabPasswords.length; i++) {
			if(tabPasswords[i].equals(motDePasse)) { // si on le trouve dans le tableau...
				correctTab = true; // ...on place correctTab à true
			}
		}

		// version liste
		if(listPasswords.contains(motDePasse)) { // si on le trouve dans la liste...
			correctList = true; // ...on place correctList à true
		}

		/* Quelle est la différence ? Y'en a-t-il une ?
		 * La différence c'est que dans la version tableau, il a fallu programmer
		 * le parcours séquentiel (élément par élément) du tableau alors que la
		 * recherche dans la liste a été beaucoup plus simple : il a suffit de faire
		 * un appel à la méthode "contains" :
		 * 		http://java.sun.com/javase/6/docs/api/java/util/LinkedList.html#contains%28java.lang.Object%29
		 * qui "Returns true if this list contains the specified element." !
		 *
		 * Affichons donc les deux résultats pour se convaindre qu'ils seront identiques mais
		 * que la programmation avec la liste a été beaucoup plus simple du côté du programmeur
		 * qui ne doit plus s'occuper de savoir "comment" la liste est parcourue pour savoir
		 * si oui ou non l'objet est dedans.
		 */
		System.out.println("Réponse avec tableau : " + correctTab);
		System.out.println("Réponse avec liste : " + correctList);
	}
}
Share and Enjoy:
  • Print
  • Digg
  • Sphinn
  • del.icio.us
  • Facebook
  • Mixx
  • Google Bookmarks

Reply

  Loading...
c
compose new post
j
next post/next comment
k
previous post/previous comment
r
reply
e
edit
o
show/hide comments
t
go to top
esc
cancel