Implémentation d'un OrderedDictionary générique
Bien qu'une implémentation générique de OrderedDictionary ne soit pas disponible dans .NET 3.5, en créer une n'est pas trop complexe . Nous pouvons exploiter une KeyedCollection pour le stockage et implémenter diverses méthodes pour trier les éléments comme List
Tests
public interface IOrderedDictionary<TKey, TValue> : IDictionary<TKey, TValue>, IOrderedDictionary { // ... }
Ces tests démontrent les différentes capacités du OrderedDictionary implémenté.
public class OrderedDictionary<TKey, TValue> : IOrderedDictionary<TKey, TValue> { private KeyedCollection2<TKey, KeyValuePair<TKey, TValue>> _keyedCollection; // ... }
Conclusion
Bien que .NET ne puisse pas fournir un OrderedDictionary générique mise en œuvre, créer les vôtres avec ces ressources est une solution viable pour maintenir à la fois la vitesse de recherche basée sur les clés et l'ordre d'insertion.public class KeyedCollection2<TKey, TItem> : KeyedCollection<TKey, TItem> { private Func<TItem, TKey> _getKeyForItemDelegate; // ... } public class Comparer2<T> : Comparer<T> { private readonly Comparison<T> _compareFunction; // ... } public class DictionaryEnumerator<TKey, TValue> : IDictionaryEnumerator, IDisposable { // ... }
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!