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 :

taille de files 904 tailleHashMap = 3204
alors que je m'attend à ce qu'il soit tous les deux à la même taille.