8
votes

Comment trouver la clé minimale dans le dictionnaire

Je déclare le dictionnaire comme suit: xxx

et j'ai utilisé comme suivant:

touchddiction [touchid] = TouchObject;

Donc, le touchdimant gardera la clé de TouchID. Maintenant, j'essaie de trouver la clé minimale à l'aide du dictionnaire, mais je ne sais pas comment faire. Avoir une suggestion?

considération, C.porawat


4 commentaires

Pourriez-vous expliquer votre cas d'utilisation ici? Quel est l'avantage de connaître la Min?


Une autre façon de faire cela est de stocker la valeur minimale "actuelle" et sur chaque ajout / supprimer du dictionnaire, vérifiez-le et mettre à jour si nécessaire. Ça va arrêter l'énumération des clés.


Avez-vous envisagé si un sortidlist <,> ou trioddiction <,> est un meilleur ajustement pour votre collection? msdn.microsoft.com/en-us/library/5z658b67.aspx


J'essaie de vérifier la valeur booléenne dans tous les objectifs du dictionnaire.


3 Réponses :


22
votes

Dictionnaire a une propriété de clés qui vous permet d'énumérer les clés dans le dictionnaire. Vous pouvez utiliser les méthodes d'extension MIN LINQ pour obtenir la clé minimale comme suit:

int minimumKey = touchDictionary.Keys.Min();


4 commentaires

Et malheureusement, la fonction est une opération O (n). Vous n'obtenez aucun des avantages d'avoir un dictionnaire ici.


Peut-être envelopper votre dictionnaire dans une classe qui peut conserver une trace de la clé min utilisée pour faire des entrées?


Il n'y a rien dans la question initiale qui indique qu'il s'agit d'une opération sensible aux performances!


Merci beaucoup pour votre suggestion



0
votes

quelque chose comme touchdictionary.keys.min () . Assurez-vous simplement d'importer le System.LINQ Espace de noms.


0 commentaires

0
votes

Il y a une bonne réponse interne ce post sur SO:

Comment triez-vous un dictionnaire en valeur?

Vous auriez juste besoin de trier par clé à la place


0 commentaires