2013-05-20 2 views
-4

Je veux trier la carte complète dans l'ordre décroissant, la stucture de la carte est inférieure àTri d'une carte imbriquée basée sur la valeur de la carte intérieure

SortedMap<String, SortedMap<String, Long>> 

Je veux trier par la valeur à long de la SortedMap intérieure . Comment cela peut-il être fait?

Merci.
EDIT: la carte a été remplacée par SortedMap
la carte interne contiendra toujours une seule valeur.

+0

Que voulez-vous dire exactement? Comment trieriez-vous '{" A "=> {" A1 "=> 1," A2 "=> 4}," B "=> {" B1 "=> 2," B2 "=> 3}}'? –

+2

Btw: hashMap n'est pas une structure triable, c'est une carte de toute façon ... – Smajl

+0

http://stackoverflow.com/a/8119401/1654265 –

Répondre

3

Un HashMap ne peut pas être trié. Un TreeMap est trié, mais par des clés, et non par des valeurs.

Si vous voulez parcourir les entrées de la carte, triées par leur valeur, alors je copierais simplement toutes les entrées dans une liste, trierais cette liste comme vous le souhaitez, et parcourirais la liste triée.

+0

mais cela va trier seulement la carte intérieure .. J'ai besoin de trier la carte interne + externe complète basée sur la valeur de la carte intérieure. Si le tri est incorrect, les données ne s'afficheront pas correctement. – Mizan

+0

Ce n'est pas ce que vous avez demandé. Vous avez demandé: Je veux trier une carte imbriquée. Le tri de la carte externe n'a aucun sens. Que faire si la carte interne a plusieurs valeurs (comme n'importe quelle carte a généralement)? Comment trier les entrées, alors? Quoi qu'il en soit, la réponse est la même. Extrayez les entrées dans une liste et triez la liste comme vous le souhaitez. Au lieu de trier un 'List >', vous triez un 'List >>'. –

+0

la carte interne n'a qu'une seule valeur (Cela ne peut pas augmenter). J'ai besoin de trier la carte complète. – Mizan