Posez votre question Signaler

[java] trier une Hashtable

karine - Dernière réponse le 16 mai 2007 à 13:29
Bonjour tout le monde !

J'ai une hashtable qui a pour clés des mots et pour valeurs des nombres.

Comment je peux faire pour trier tout ça dans l'ordre décroissant des nombres ?

Merci beaucoup !!
Lire la suite 
Réponse
+4
moins plus
C'est hallucinant ce que l'on peut lire comme conneries sur ce forum ...


La demoiselle veut trier sa Map en fonction des valeurs et non des clés.

Don même si ce qui est dit à propos de la possibilité de redéfinir un comparateur (qqsoit le type de Map), cette comparaison s'applique toujours sur les clés.
choubaka 36070Messages postés jeudi 4 avril 2002Date d'inscription ModérateurStatut 5 août 2015 Dernière intervention - 16 mai 2007 à 13:29
Don même si ce qui est dit à propos de la possibilité de redéfinir un comparateur (qqsoit le type de Map), cette comparaison s'applique toujours sur les clés.

pas forcément, tout dépend de l'implémentation du comparator..

rien en t'empêche d'extraire les valeurs, les trier par la suite, etc ...
Répondre
Ajouter un commentaire
Réponse
+1
moins plus
salut

utilise cet objet ..

http://java.sun.com/j2se/1.4.2/docs/api/java/util/TreeMap.html
Ajouter un commentaire
Réponse
+0
moins plus
D'accord, mais maintenant que j'ai un treemap, comment je fais pour afficher les 10 premiers éléments (clé + valeur)?

J'ai pas trouvé sur internet.

Merci beaucoup choubaka pour ton aide!
Ajouter un commentaire
Réponse
+0
moins plus
Ah, j'ai trouvé comment afficher le treemap, mais il est pas du tout trié dans l'ordre de mes valeurs (qui sont des nombres).

Je vous mets un bout de code
Hashtable keywords; //remplie ailleurs
TreeMap tree = new TreeMap(keywords);
	
Set ensemble = tree.keySet();
    Iterator iterateur = ensemble.iterator();
  while(iterateur.hasNext()){
      		Object o = iterateur.next();
      System.out.println(o.toString() + " : " + tree.get(o));
    	}


Comment je peux faire ?

merci !!
Ajouter un commentaire
Réponse
+0
moins plus
resalut

tes keys, ce sont des objets de type Integer ?
choubaka 36070Messages postés jeudi 4 avril 2002Date d'inscription ModérateurStatut 5 août 2015 Dernière intervention - 15 juin 2005 à 12:58
si c'est le cas, il faut jouer avec un Comparator associé ou faire jouer le fait que les Integer implémentent l'interface comparable
Répondre
teebo 33571Messages postés jeudi 14 octobre 2004Date d'inscription ModérateurStatut 24 février 2011 Dernière intervention - 15 juin 2005 à 13:36
Salut vous deux

Ce sont les values qui sont les integers...

Je ne sais pas en java mais je ferais une structure avec string key int value, je surchargerais Haschcode en key et les comparateurs sur la value...
Et après apparement tu as des fonctions de tri auto en java...
Répondre
choubaka 36070Messages postés jeudi 4 avril 2002Date d'inscription ModérateurStatut 5 août 2015 Dernière intervention - 15 juin 2005 à 19:51
désolé Teebo, si tu suis le lien de la javadoc ci-dessus, tu remarqueras que les Clefs et les valeurs sont des Objets et non des primitives.

Pour trier des objets dans ce genre de structure, il suffit de créer un objet qui implémente l'interface Comparator, cet objet va itérer la liste des clef (qui implémentent comparable) et les trier pour par exemple renvoyer une structure au sein de laquelle les objets seront triés.
Répondre
teebo 33571Messages postés jeudi 14 octobre 2004Date d'inscription ModérateurStatut 24 février 2011 Dernière intervention teebo - 16 juin 2005 à 08:56
Point Java ne connait, et primitive ça reste pour moi une fonction mathématique, plus précisément l'opération inverse sur une fonction de la dérivation :o)

Donc tu peux mettre un comparateur sur tes clés qui en fait compare les valeurs?
Répondre
Ajouter un commentaire
Réponse
+0
moins plus
Merci tout le monde !

Finalement c'était trop compliqué pour moi, j'ai mis le contenu de ma hashtable dans un tableau à deux dimensions sur lequel j'ai appliqué un tri "bubble sort".

Mais merci quand même, ça m'a fait découvrir les treemap.
Ca pourra toujours servir :-)
Ajouter un commentaire
Réponse
+0
moins plus
Utilise simplement un TreeMap pour stocker tes objets (clé, valeur).

LE tri est implémenté par défaut dans TreeMap.
Il te suffit de récupérekeyset (map.keyset() ) puis d'itérer sur ce set. Les clés de ton map sont retournées triées automatiquement! (voir code ci-dessous).


import java.util.Iterator;
import java.util.Set;
import java.util.TreeMap;

public class TestMap extends TreeMap {

	public TestMap() {
		super();
	}
	
	public void displayMap(){
		Set keys = this.keySet();
		Iterator it = keys.iterator();
		while(it.hasNext()){
			String key = (String)it.next();
			System.out.println(key + ((Integer)this.get(key)).intValue());
		}
	}

	public static void main(String args[]) {
		TestMap map = new TestMap();
		map.put("Alice", new Integer(12));
		map.put("Phil", new Integer(12));
		map.put("Pol", new Integer(12));
		map.put("Manu", new Integer(12));
		map.put("Fred", new Integer(12));
		map.put("Georges", new Integer(12));
		map.put("Pascale", new Integer(12));
		map.put("Isa", new Integer(12));
		map.displayMap();

	}
}



;-)
HackTrack
Ajouter un commentaire
Réponse
+0
moins plus
svp pourriez vous me dire comment est la forme d'un hashtable je veux dire comment sont stockées les informations là dedans??
Ajouter un commentaire
Réponse
+0
moins plus
pour trié avec les nombre il faut creé votre comparateur qui imlement la classe comparator
et tu instensuera le classe treemap avec le constructeur
TreeMap(ton comparateur)
et puis que tu remplira ta treemap tu trouvra qu'ils sont trié avec les nombres
Ajouter un commentaire
Ce document intitulé «  [java] trier une Hashtable  » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes.

Le fait d'être membre vous permet d'avoir des options supplémentaires.