Avatar billede nielsbrinch Nybegynder
05. april 2004 - 19:17 Der er 5 kommentarer og
1 løsning

Sortering af objekter i ArrayList

Jeg har et objekt med en metode, der returnerer et nummer:

public class MitObjekt
{
  private int etNummer;

  public int GetObjektNummer()
  {
    return etNummer;
  }
}

Jeg skaber nu 10 objekter med 10 forskellige tal, fra 1-10.

Jeg tilføjer dem i tilfældig rækkefølge til en ArrayList.

Nu vil jeg gerne bruge ArrayList'ens Sort-funktion til at sortere objekterne så det første element i min ArrayList har det mindste nummer.
Avatar billede arne_v Ekspert
05. april 2004 - 19:27 #1
Du laver en IComparer som sammenligner GetObjektNummer.
Avatar billede arne_v Ekspert
05. april 2004 - 19:34 #2
Eksempel:

using System;
using System.Collections;

public class MitObjekt
{
    private int etNummer;
    public MitObjekt(int etNummer)
    {
        this.etNummer = etNummer;
    }
    public int GetObjektNummer()
    {
        return etNummer;
    }
}

public class MitObjektComparer : IComparer
{
    int IComparer.Compare(Object o1, Object o2)  {
        return (((MitObjekt)o1).GetObjektNummer() - ((MitObjekt)o2).GetObjektNummer());
    }
}

class MainClass
{
    public static void Main(string[] args)
    {
        ArrayList list = new ArrayList();
        list.Add(new MitObjekt(3));
        list.Add(new MitObjekt(2));
        list.Add(new MitObjekt(1));
        for(int i = 0; i < list.Count; i++)
        {
            Console.WriteLine(((MitObjekt)list[i]).GetObjektNummer());
        }
        list.Sort(new MitObjektComparer());
        for(int i = 0; i < list.Count; i++)
        {
            Console.WriteLine(((MitObjekt)list[i]).GetObjektNummer());
        }
    }
}
Avatar billede nielsbrinch Nybegynder
05. april 2004 - 19:43 #3
Tak Arne.
Avatar billede erve Nybegynder
05. april 2004 - 19:43 #4
Men i dette tilfælde er det måske mere oplagt at bruge SortedList i stedet for ArrayList. Det koster en anelse i performance ved add af elementer, men er en meget stærk Collection
Avatar billede arne_v Ekspert
05. april 2004 - 19:43 #5
OK ?
Avatar billede nielsbrinch Nybegynder
05. april 2004 - 19:46 #6
Tak for tippet, men nej tak.
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