[java] explications treeset

Fermé
timon44 Messages postés 53 Date d'inscription dimanche 28 décembre 2008 Statut Membre Dernière intervention 17 décembre 2010 - 30 déc. 2008 à 18:05
Marco la baraque Messages postés 996 Date d'inscription vendredi 9 mai 2008 Statut Contributeur Dernière intervention 5 novembre 2009 - 30 déc. 2008 à 20:29
Bonjour,
je recherche dans la méthode modifierNumero à modifier dans lesNumeros, un numéro.J'utilisai avant ArrayList, mais je l'ai remplacer par un TreeSet, pour ne pas avoir de doublons, mais indexOf ne marche pas avec TreeSet...
Comment est ce que je pourrais faire ?


import java.util.*;

public class Personne {
	String nom;
	String prenom;
	SortedSet<NumTel> lesNumeros;
	
	//constructor
	Personne(String name, String pren){
	nom=name;
	prenom=pren;
	lesNumeros = new TreeSet<NumTel>();
}


public void AjouterNumero(NumTel num){
	lesNumeros.add(num);
}

public String getNom(){
	return nom;
}

public String getPrenom(){
	return prenom;
}

public void SupprimerNumero(String num){
	if (lesNumeros.contains(num)) {
		int pos=(lesNumeros.indexOf(num));
		lesNumeros.remove(pos);}
	else {System.out.print("numero non existant");}
	
}


public void ModifierNumero(NumTel numFaux,NumTel numBon){
	if (lesNumeros.contains(numFaux)) {
		int pos=(lesNumeros.indexOf(numFaux));
		lesNumeros.set(pos, numBon);}
	else {System.out.print("numero non existant");}
	
}

int cpt=0;


public void AfficherNumeros(){
	Iterator<NumTel> iter = lesNumeros.iterator();
	while (iter.hasNext()){
		System.out.println(iter.next());
		cpt++;
		
	}
		

	
}


}



Je je ne comprends pas non plus la méthode comparator() implémenté avec SortedSet ....

Merci beaucoup!
A voir également:

1 réponse

Marco la baraque Messages postés 996 Date d'inscription vendredi 9 mai 2008 Statut Contributeur Dernière intervention 5 novembre 2009 329
30 déc. 2008 à 20:29
Bonsoir timon44,
Bon, ce que je te conseille, c'est d'utiliser une hashmap classique pour gérer tes numéros de téléphone.
Concrètement, c'est carrément plus efficace qu'un set parce que tu peux récupérer tes numéros en temps constant (une hashmap c'est fait pour ça), alors qu'avec un set, il faut parcourir tout ton ensemble (et avec un sortedset, ça se fait plus rapidement, genre en O(n log n) pour un treeset, mais c'est toujours plus long).
En ce qui concerne la duplicité des données, ton élément ne pourra être inséré qu'une seule et unique fois dans ta map (comme dans un set).

En ce qui concerne comparator(), c'est une méthode qui te retourne le comparateur utilisé par ta sortedSet. En gros un sortedSet, c'est un ensemble dans lequel les éléments sont triés. Donc pour trier tes éléments, il faut les comparer entre eux. Si ordonner1 et 2 est facile (encore qu'on puisse définir des comparateurs mathématiques complexes), ordonner deux instances d'un classe Voiture est plus compliqué (d'où la nécessité d'implémenter des algorithmes de comparaison, ici des classes qui implémentent l'interface Comparator).

Cordialement,
2