Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: Java tietorakenne ongelma

Jaymaano [01.04.2005 16:14:04]

#

Sormi meni suuhun Java collectioneiden kanssa eikä apua tunnu löytyvän.

Minulla on kolme yhteistyöluokkaa A, B ja C. A luokka sisältää ArrayList collectionin beet ja luokka B sisältää ArrayList collectionin ceet. Luon 3 uutta ArrayList elementtiä beet collectioniin ja ceet collectioniin elementit i,j,k,s,t ja u.

Kuinka saan liitettyä nuo ceet:n elementit tiettyihin beet elementteihin? Vai pitäisikö minun jo ceet elementin luontivaiheessa saada määritettyä mihin beet elementtiin kyseinen tietoalkio kuuluu? Kuinka?

Onko mahdollista saada tulostettua elementtejä hierarkkisesti? Eli esim tässä tapauksessa:

beet:
[0] = ceen elementit i, j, k
[1] = ceen elemntit s, t, u
[2] = tyhjä

Kiitos jo lukeemaan vaivautuneille.

FooBat [01.04.2005 19:37:59]

#

Eli haluat siis tehdä tietorakenteen, jossa on joukko B-olioita, joihin jokaiseen liittyy joukko C-olioita.

Tuossa eräs mahdollisuus. Eli lisäät halutut C:t oikealle B:lle heti luonnin yhteydessä (tai vaikka myöhemmin, mutta kuitenkin siten, että on olemassa tieto siitä mikä C kuuluu kullekin B:lle).

public class A {
  ArrayList beet;
  public A() {
    beet = new ArrayList();
  }

  public void addB(B uusiB) {
    beet.add(b);
  }
  public void tulostus() {
    for (int i = 0; i < beet.size(); i++) {
      B b  = (B)beet.get(i);
      b.tulostus();
    }
  }
}
public class B {
  ArrayList ceet;

  public B() {
    ceet = new ArrayList();
  }
  public addC(C uusic) {
    ceet.add(uusic);
  }
  public void tulostus() {
    for (int i = 0; i < ceet.size(); i++) {
      C c  = (C)ceet.get(i);
      System.out.println(c.toString()); //tai jotain
    }
  }
}
...

public static void main(String[] args) {
   A a = new A();
   B b = new B();
   b.addC(new C("i"));
   b.addC(new C("j"));
   b.addC(new C("k"));
   a.addB(b);

   b = new B();
   b.addC(new C("s"));
   b.addC(new C("t"));
   b.addC(new C("u"));
   a.addB(b);

   b = new B();
   a.addB(b);

   a.tulostus();
}

Jaymaano [01.04.2005 21:28:24]

#

Aivan näin. Sain homman melkein ratkaistua, mutta tuo selventi tyhjentävästi. Tattista vain..

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta