Fetstil Fetstil Kursiv Understrykning linje färgläggning tabellverk Punktlista Nummerlista Vänster Centrerat högerställt Utfyllt Länk Bild htmlmode
  • Forum & Blog
    • Forum - översikt
      • .Net
        • asp.net generellt
        • c#
        • vb.net
        • f#
        • silverlight
        • microsoft surface
        • visual studio .net
      • databaser
        • sql-server
        • databaser
        • access
        • mysql
      • mjukvara klient
        • datorer och komponenter
        • nätverk, lan/wan
        • operativsystem
        • programvaror
        • säkerhet, inställningar
        • windows server
        • allmänt
        • crystal reports
        • exchange/outlook
        • microsoft office
      • mjukvara server
        • active directory
        • biztalk
        • exchange
        • linux
        • sharepoint
        • webbservers
        • sql server
      • appar (win/mobil)
      • programspråk
        • c++
        • delphi
        • java
        • quick basic
        • visual basic
      • scripting
        • asp 3.0
        • flash actionscript
        • html css
        • javascript
        • php
        • regular expresssion
        • xml
      • spel och grafik
        • DirectX
        • Spel och grafik
      • ledning
        • Arkitektur
        • Systemutveckling
        • krav och test
        • projektledning
        • ledningsfrågor
      • vb-sektioner
        • activeX
        • windows api
        • elektronik
        • internet
        • komponenter
        • nätverk
        • operativsystem
      • övriga forum
        • arbete karriär
        • erbjuda uppdrag och tjänster
        • juridiska frågor
        • köp och sälj
        • matematik och fysik
        • intern information
        • skrivklåda
        • webb-operatörer
    • Posta inlägg i forumet
    • Chatta med andra
  • Konto
    • Medlemssida
    • Byta lösenord
    • Bli bonsumedlem
    • iMail
  • Material
    • Tips & tricks
    • Artiklar
    • Programarkiv
  • JOBB
  • Student
    • Studentlicenser
  • KONTAKT
    • Om pellesoft
    • Grundare
    • Kontakta oss
    • Annonsering
    • Partners
    • Felanmälan
  • Logga in

Hem / Forum översikt / inlägg

Posta nytt inlägg


Problem med hashtabeller

Postades av 2007-10-07 20:37:16 - jonas Eriksson, i forum c# (c-sharp), Tråden har 2 Kommentarer och lästs av 1006 personer

Hej!

Jag har jätte problem med Hashtabeller.. Min nyckel beskriver indexet för djupet i en rekursiv loop. För varje index kan det finnas ett eller flera barn. Dessa skall placeras i en array eller helst en objectsamling. Jag vill alltså ha en hashtabell som pekar på array/objectsamling för varje nivå i hierarkin.


Hashtabell:
Nyckel(Index) | Värde
1 | barn1,barn2,barn3 osv.
2 | barn4,barn5
3 | barn8


Jag har försökt, men jag kommer inte vidare:
public Hashtable myHashtable = new Hashtable();


getObjectsRecursiv(iParent,0)



getObjectsRecursiv(int iParent, int iDeep)
{
// Här hämtar jag object som är barn till theobject....
strSQL = "SELECT iIDBarn from tbl_rekursivt Where Parent = " + iParent
..
..
För varje barn loopa igenom

Släng in iIDBarn i en array och peka på myHashtable med nyckeln iDeep

getObjectsRecursiv(iBarn,iDeep+1);
Next

}



WriteValuesFromHash()
{
for(int i = 0; i <myHashtable.count; i++)
{
// Här vill jag skriva ut samtliga barn för varje nivå..
}
}

Hur löser man detta???


Svara

Sv: Problem med hashtabeller

Postades av 2007-10-08 14:33:43 - Johan Jonsson



WriteValuesFromHash()
{
foreach (DictionaryEntry myDE in hash)
{
//myDe.Value = din objectlista
//myDe.Key = din nyckel. dvs 1,2,3,4,5
}
}


Svara

Sv: Problem med hashtabeller

Postades av 2007-10-08 23:01:26 - Tomas Johansson

Om jag förstår frågan och din pseudkod rätt så vet du redan hur du ska populera din hashtabell med din metod "getObjectsRecursiv" och det enda återstående problemet är att rekursivt loopa igenom en sådan hashtabell och skriva ut alla barnen för varje nivå.

Här är ett litet exempel med en 'IDictionary<int, int[]>' som illustrerar hur man kan utföra de rekursiva anropen.

class Program
{
static void Main(string[] args)
{
IDictionary<int, int[]> myHashtable = new Dictionary<int, int[]>();
myHashtable.Add(1, new int[]{2,3,4});
myHashtable.Add(3, new int[]{5,6,7});
myHashtable.Add(7, new int[]{8,9,10});

// starta anropen med 1 som "root-parent"
WriteValuesFromHash(1, myHashtable, Console.Out);

Console.ReadLine();
}

private static void WriteValuesFromHash(int parent, IDictionary<int, int[]> myHashtable, System.IO.TextWriter textWriter)
{
if(!myHashtable.ContainsKey(parent)) {
// det finns inga children att skriva ut
return;
}

int[] children = myHashtable[parent];

// skriv ut värdet på parent samt alla dess children
textWriter.WriteLine("Parent: " + parent);
foreach(int child in children) {
textWriter.WriteLine("Child: " + child);
}
textWriter.WriteLine("---------------");

// nu har vi ovan skrivit ut alla children
// till metodens parent-parameter och kan nu göra
// de rekursiva anropen med varje child som parameter
foreach (int child in children) {
WriteValuesFromHash(child ,myHashtable, textWriter);
}
}
}


Svara

Nyligen

  • 19:55 kick-off med fokus på hälsa?
  • 19:53 kick-off med fokus på hälsa?
  • 16:24 Föreslå en skönhetsklinik online
  • 16:23 Föreslå en skönhetsklinik online
  • 18:42 Hvor finder man håndlavede lamper
  • 18:41 Hvor finder man håndlavede lamper
  • 16:36 Allt du behöver veta om keramiskt
  • 16:14 Vem anlitar man egentligen när tak

Sidor

  • Hem
  • Bli bonusmedlem
  • Läs artiklar
  • Chatta med andra
  • Sök och erbjud jobb
  • Kontakta oss
  • Studentlicenser
  • Skriv en artikel

Statistik

Antal besökare:
Antal medlemmar:
Antal inlägg:
Online:
På chatten:
4 570 718
27 958
271 751
3 342
0

Kontakta oss

Frågor runt konsultation, rådgivning, uppdrag, rekrytering, annonsering och övriga ärenden. Ring: 0730-88 22 24 | pelle@pellesoft.se

© 1986-2013 PelleSoft AB. Last Build 4.1.7169.18070 (2019-08-18 10:02:21) 4.0.30319.42000
  • Om
  • Kontakta
  • Regler
  • Cookies