Avatar billede nielsbrinch Nybegynder
04. december 2003 - 03:50 Der er 6 kommentarer og
1 løsning

En ArrayList minus en anden ArrayList

Her på de sene nattetimer har jeg rodet med at lave en metode der tager alle strengene i ét array og flytter dem over i et nyt array, bortset fra dem der eksisterer i et tredje array.

Det her skulle gerne virke...

public static void remake(ArrayList all, ArrayList invalid) {
  IEnumerator recEnum = all.GetEnumerator();
  IEnumerator invEnum;
  ArrayList approved = new ArrayList();

  while (recEnum.MoveNext()) {
    invEnum = invalid.GetEnumerator();
    bool valid = true;
    while (invEnum.MoveNext()) {
      if (invEnum.Current.ToString().Equals(recEnum.Current.ToString())) {
        valid = false;
        break;
      }
    }
    if (valid) {
      approved.Add(recEnum.Current);
    }
  }
}

Jeg har dog en grum fornemmelse af at jeg har gjort det på en vildt ineffektiv måde. Nogen der har et forslag til at forbedre den? Gerne bare småting, for det drejer sig om to arrays med rigtig, rigtig mange elementer i.
Avatar billede arne_v Ekspert
04. december 2003 - 08:11 #1
Jeg forstår ikke hvorfor du vil bruge enumerator. En ganske almindelig
for løkke og index ind i array listen forekommer mig simplere.

Du skal vel returnere approved eller på anden måde bevare den.

Rent algoritme mæssigt er der vel ikke så meget at gøre. Hvis data var
sorteret i begge array lister kunne du lave noget smartere. Men jeg
tvivler på at det kan betale sig at sortere først (selvom der vel i
princippet er bedre big O egenskaber).
Avatar billede nielsbrinch Nybegynder
04. december 2003 - 12:15 #2
Object[] rec = all.ToArray();
for (int i = 0; i < rec.length; i++)

Sådan?
Avatar billede nielsbrinch Nybegynder
04. december 2003 - 12:15 #3
Det var ikke et spørgsmål, det er for dumt at spørge om.
Avatar billede arne_v Ekspert
04. december 2003 - 12:29 #4
Du kan da gå direkte på ArrayList'en. Som:

        ArrayList all;
        for(int i = 0; i < all.Count; i++)
        {
            Console.WriteLine(all[i]);       
        }
Avatar billede arne_v Ekspert
04. december 2003 - 12:34 #5
C# indexer er en af de ting jeg faktisk godt kan lide ved ved C#.
Avatar billede nielsbrinch Nybegynder
08. december 2003 - 16:47 #6
Hvis du vil ha' points er det nu :-)
Avatar billede arne_v Ekspert
08. december 2003 - 16:56 #7
ok
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester