Finden Sie den nächsten Wörterbuchschlüssel effizient

Ich habe eine Reihe von Paaren von Daten und monetären Werte in einem SortedDictionary<DateTime, decimal> entsprechend Darlehensvaluta berechnet in der Zukunft im Vertrag definierten compounding dates. Gibt es eine effiziente Möglichkeit, ein Datum zu finden Schlüssel, der am nächsten ist zu einem bestimmten Wert? (Genauer gesagt, der nächste Schlüssel weniger als oder gleich das Ziel). Der Punkt ist das speichern nur die Daten, die an die Punkte, wenn der Wert geändert, aber effizient die Antwort auf die Frage "was war der Saldo auf x date?" für ein beliebiges Datum in Reichweite.

Eine ähnliche Frage gestellt wurde ( Was .NET-Wörterbuch unterstützt "finde nächstgelegene Taste" Betrieb? ) und die Antwort war "Nein" zu der Zeit, zumindest von den Leuten, die geantwortet haben, aber das war vor fast 3 Jahren.

Die Frage So finden Sie Punkt zwischen zwei Schlüssel im Wörterbuch sortiert präsentiert die offensichtliche Lösung naiv Durchlaufen alle Tasten. Ich Frage mich, ob alle integrierten framework-Funktion vorhanden ist, um die Vorteile der Tatsache, dass die keys sind bereits indiziert und sortiert im Speicher -- oder, alternativ, ein integriertes Framework-Auflistungsklasse, die geeignet wäre, sich selbst besser zu dieser Art der Abfrage.

Kommentar zu dem Problem
Aber die Schlüssel des dictionary sind NICHT geordnet in Erinnerung. Das ist, warum Sie nicht direkt zu tun, ein "get nearest" oder "weniger-als-oder-gleich" auf ein Wörterbuch. Kommentarautor: Jim Mischel
Die verlinkte Frage ist zu erwähnen, , SortedList<K V> - Struktur. Ich gehe mit, dass. Kommentarautor: nawfal

InformationsquelleAutor der Frage Joshua Honig | 2012-09-13

Schreibe einen Kommentar