Laden...

Daten in IList gruppieren

Erstellt von bigpoint vor 17 Jahren Letzter Beitrag vor 17 Jahren 2.127 Views
B
bigpoint Themenstarter:in
121 Beiträge seit 2006
vor 17 Jahren
Daten in IList gruppieren

Ich habe einen IList, die List ist mit eine klasse (int,int,int) befühlt
Wie kann ich überprüfen, ob in der List die ersten zwei int gleich sind??

F
722 Beiträge seit 2005
vor 17 Jahren

hast du jetzt die list mit zahlen gefüllt oder eigenen objekten?
um was für eine klasse handelt es sich da?

B
bigpoint Themenstarter:in
121 Beiträge seit 2006
vor 17 Jahren

Es ist eine eigene Klasse die mit Zahlen befühlt ist.

So seht es aus


1,2,3
1,2,5
1,2,9
5,6,0
5,6,9
5,6,7
1,3,5
2,9,6

B
bigpoint Themenstarter:in
121 Beiträge seit 2006
vor 17 Jahren

wurde es vielleicht mit IDictionary gehen??

B
bigpoint Themenstarter:in
121 Beiträge seit 2006
vor 17 Jahren

ist diese Forum überhautp die richtige für die Frage?

B
1.529 Beiträge seit 2006
vor 17 Jahren

Ich nehme an, du meinst so etwas in der Art:

public struct DreiInts
{
   public int a, b, c;
   public DreiInts( int a, int b, int c)
   {
      this.a = a; this.b = b; this.c = c;
   }
}

List< DreiInts > meineListe = new List< DreiInts >();

Jetzt weiß ich nicht genau, was du mit überprüfen meinst.

// alle heraussuchen, bei denen die ersten beiden ints gleich sind
List< DreiInts >< zweiGleich = meineListe.FindAll( delegate bool( DreiInts value ) { return (value.a == value.b ); } );

// nur Indize heraussuchen
List<int> Indize = new List<int>();
for( int i = 0; i < meineListe.Count; i++ )
{
   if (meineListe[i].a == meineListe[i].b)
   {
      Indize.Add( i );
   }
}
B
bigpoint Themenstarter:in
121 Beiträge seit 2006
vor 17 Jahren

ich suche alle c wo a=a and b=b, spricht ich muss merken das a und b schon einmal vorgekommen ist und dann nur c speichern.
Das ganze habe ich versucht eben mit IDictionary und einem operator zu lösen klappt aber leider nicht so wie ich es mir vorstelle.


IDictionary<DreiInts, IList<Int32>> test = new Dictionary< DreiInts, IList<Int32>>();

B
bigpoint Themenstarter:in
121 Beiträge seit 2006
vor 17 Jahren

geht es wirklich nicht, oder habe ich mich falsch ausgedruckt?

D
386 Beiträge seit 2007
vor 17 Jahren

Nochmal zum mitdenken:

  1. Du willst fuer die Kombination aus Zahl1 und Zahl2 immer nur eine Zahl3 speichern?
    Dann waere es wohl eher eine Zuordnung im Sinne von Dictionary<ZweiZahlen, int>, oder?

  2. Falls ich dich oben richtig verstanden hab (und falls bei dir diese Objekte fachlich immer gleich sind, wenn die zwei Zahlen gleich sind), dann koenntest du ggf. ueber .Equals() etc. dafuer sorgen, dass du diese ZweiZahlen Klasse auch als brauchbaren Dictionary Key nehmen kannst..

Pound for pound, plutonium is about as toxic as caffeine when eaten.

B
bigpoint Themenstarter:in
121 Beiträge seit 2006
vor 17 Jahren

Tut mir Leid für die ungenaue Problembeschreibung.

Original von DarKlajid
Nochmal zum mitdenken:

  1. Du willst fuer die Kombination aus Zahl1 und Zahl2 immer nur eine Zahl3 speichern?
    Dann waere es wohl eher eine Zuordnung im Sinne von Dictionary<ZweiZahlen, int>, oder?

Ja vorausgesetzt ich kann den int wert in einem „vector“ speichern

Wie ich das ganze in c++ lösen sollte weis ich,
vielleicht hilft die c++ Lösung um das Problem besser zu verstehen.

Ich werde eine std::map nehmen die als Schlüssel eine Struktur (mit entsprechenden Vergleichsprädikat) mit zwei int- Werten und den dritten int Wert in einem vector packen.

Gruß