Bonjour,
J'ai un petit problème pour trier une hashMap par valeur voila le code correspondant :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26 String dirName="leRepertoirAParcourir" Double similarity; File dir = new File(dirName); HashMap<String, Double> docSimilarities = new HashMap<String, Double>(); if(dir.isDirectory()){ //Liste des fichiers du repertoire, ajouter un FileNameFilter si necessaire String[] fileNames = dir.list(); for(String fileName2 : fileNames){ String completeFileName = dirName + File.separator + fileName2; similarity = getSimilarity(fileName, completeFileName); docSimilarities.put(fileName2, similarity); } } TreeSet<String> files = new TreeSet<String>(new Comparator<String>() { public int compare(String o1, String o2){ //ordre inverse des valeurs return Double.compare(docSimilarities.get(o2), docSimilarities.get(o1)); } }); files.addAll(docSimilarities.keySet()); System.out.println("taille de files "+ files.size() + " tailleHashMap = "+docSimilarities.size()); for(String file:files) System.out.println(file + " : " + docSimilarities.get(file));
sachant que tous les noms de fichiers sont unique je ne comprend pas pourquoi j'ai la tracestack suivante :
alors que je m'attend à ce qu'il soit tous les deux à la même taille.taille de files 904 tailleHashMap = 3204
Partager