Re: Objekt Identität



Hallo Armin!

"Armin Zingler" <az.nospam@xxxxxxxxxx> schrieb:
> Stephan, ich verstehe nicht, /wonach/ du in einer Liste binär
> suchen willst. Dieser Suchwert muss ja auch eindeutig sein. Wenn
> du also einen Wert als Suchkriterium "irgendwo" her hast, dann
> kannst du /stattdessen/ auch gleich die Objektreferenz verwenden
> und musst auch nicht mehr suchen. Sehe ich das falsch?

Das ist z.B. sinnvoll, wenn ich einen Objekt-Graphen traversiere und
Zyklen vermeiden möchte. Nachdem ich einen Knoten im Graphen (= ein
Objekt) verarbeitet habe, füge ich ihn in den Container ein. Dann
verfolge ich die Kanten des Graphen (= verbundene Objekte) und
checke für jeden Knoten zuerst, ob ich ihn schon besucht habe, indem
ich im Container nachschaue. Wenn der Container nach
Objekt-Identität sortiert ist, ist dieser Check effizient.

Ok, ich verstehe. Evtl. lässt sich das einfach über ein Wrapper-Objekt, das z.B. eine GUID, oder einen Autoincrement-Wert, als Key hat, lösen. Also zuerst /alle/ Objekte im Wrapper verpacken und ihnen eine GUID verpassen - weil ich davon ausgehe, dass das Objekt selbst keinen eindeutigen Schlüssel hat, sonst hättest du die Frage ja nicht gestellt - und anschließend nur mit dem Wrapper-Objekten arbeiten und die GUID als Key verwenden.

Na, gerade im konkreten Fall erscheint doch eine Hashtabelle mit Objektidentität (Verweis auf Knotenobjekt) als Schlüssel und z.B. einem booleschen Wert als Wert brauchbar. Natürlich könnte man auch eine andere Datenstruktur, etwa einen AVL-Baum, benutzen -- dann müsste man wirklich manuell, im einfachsten Fall numerische, Schlüssel vergeben.


--
M S Herfried K. Wagner
M V P <URL:http://dotnet.mvps.org/>
V B <URL:http://classicvb.org/petition/>


.



Relevant Pages

  • =?iso-8859-1?Q?Re:_Objekt_Identit=E4t?=
    ... Dann verfolge ich die Kanten des Graphen und checke für jeden Knoten zuerst, ob ich ihn schon besucht habe, indem ich im Container nachschaue. ...
    (microsoft.public.de.german.entwickler.dotnet.framework)
  • Re: Objekt =?ISO-8859-1?Q?Identit=E4t?=
    ... Dann verfolge ich die Kanten des Graphen und checke für jeden Knoten zuerst, ob ich ihn schon besucht habe, indem ich im Container nachschaue. ... class Prozessor {IdentityContainer m_processed; // besuchte Knoten merken public: ...
    (microsoft.public.de.german.entwickler.dotnet.framework)
  • Setting default location for computer creation in 2003AD
    ... What I would like to be able to do is produce a script that I can set ... This is the guid for the default computer container. ... I have tried with adsi edit but not sure how to obtain this identifier. ...
    (microsoft.public.win2000.active_directory)
  • Re: Container Name value gets corrupted after call to createFilePKCS10.
    ... containerName (guid), ... > the Container Name property of the CEnroll Object of MS ... > Dim objEnroll As CEnroll ...
    (microsoft.public.platformsdk.security)
  • Re: Setting default location for computer creation in 2003AD
    ... What I would like to be able to do is produce a script that I can set ... This is the guid for the default computer container. ... Windows Server MVP ...
    (microsoft.public.win2000.active_directory)