Mám dva VST (VirtualStringTree).
Zdroj - ťahám z neho 10 uzlov. Cieľ - má (napr.) 1 000 uzlov.
Potrebujem zistiť či hodnoty X1 - X10 sa nachádzajú v cieli = tento uzol už v nich je. Terajše riešenie:
Node := Target.GetFirst;
while Assignid(Nod) do
begin
Result := False;
NodeData := Target.GetNodeData(Node);
.
if Xn = NodeData.Integers[0] then
Result := True;
.
Node := Target.GetNext(Target);
end;
Pri neúspechu to je 10 prechodov cez strom a 10 000 porovnaní. Rád by som to oprimalizoval. Vzhľadom na moje vedomosti a schopnosti požadujem "hotové" riešenie. Moja predstava riešenia je:
Len v prípade potreby
- vytvorím si zoznam hodnôt NodeData.Integers[0] (primárne kľúče DB tabuľky)
- aký typ? Rieši niečo TDictionary?
- zoznam zoradím
- použijem nejakú jednoduchú/základnú metódu na vyhľadanie hodnoty Xn
- vrátim si výsledok našiel/nenašiel
Ako realizovať samotné vyhľadávanie?
Ďakujem.