Trie de HashMap avec un TreeSet
Bonjour,
J'ai un petit problème pour trier une hashMap par valeur voila le code correspondant :
Code:
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 :
Citation:
taille de files 904 tailleHashMap = 3204
alors que je m'attend à ce qu'il soit tous les deux à la même taille.