Sorteren met
de interface IComparable(VB.net 2003 & vb.net 2005)
Een demo programma waarmee je een array van objecten kan
sorteren op alle velden zowel dalend als stijgend
door middel van een sorteer order in te geven.
Hierbij maak ik gebruik van de Interface IComparable.
Het object is van het type Student. Hoe je een Classe moet aanmaken kan je
hier zien
Er zijn 5 velden : voornaam, achternaam,leeftijd,punten en sorteerwijze.
De Classe bevat een enumeratie (enuSorteerMethode),sorteerwijze is gedeclareerd
als enuSorteerMethode.
Op de overige velden wil ik dus kunnen sorteren zowel in dalende - als stijgende
lijn.
De Interface IComparable is er in geïmplementeerd
Dit doe je gewoon door "Implements IComparable" te typen onder Public Class Student
bovenaan
Na het intypen sla je op je entertoets zodat de Functie CompareTo automatisch wordt
geschreven,ze moet dan
wel nog alleen verder worden afgewerkt (zo simpel is het niet hé?)
Werkwijze :
Eerst wordt er een array aangemaakt van het type Student,nadat deze is opgevuld
wordt er een
sorteerorder gevraagd aan de gebruiker (zie foto boven).
Daarna worden ze in een ArrayList gestopt door middel van een loopje,in deze loop
geef ik nog vlug de sorteerwijze
mee aan het object Student.
Sorteerwijze is dus een integer getal die overeenkomt met de enumeratie(enuSorteerMethode).
Nu kan ik mijn ArrayList sorteren door de Functie CompareTo van de
interface IComparable.
In deze functie programmeer ik hoe de ArrayList moet worden gesorteerd.
B.v. op voornaam of op leeftijd.
De functie zal de opgegeven velden vergelijken,als de gebruiker 0 had ingeven als
input zal hij op voornaam sorteren
van a - z zoals er in de enumeratie staat (VoorNaamAsc = 0)
Vanaf nu is de ArrayList dus gesorteerd.
Het is nu nog gewoon een kwestie van de juiste gegevens in een string te gieten.
Als ik de ArrayList laat sorteren op voornaam(zie foto hieronder) wil ik de voornaam
eerst hebben in de string

of als ik laat sorteren op leeftijd wil ik de punten
niet displayen enz...(zie foto
hieronder)
Dus staan er een paar functie's in de Classe Student die de juiste string displayen.

Verder staat er nog een Classe bij om de Console te clearen voor de vb.net 2003
gebruikers.
En een functie om de titel van de Console in te stellen.
Tussen de code staat er nog uitleg
Download demo hier.
home