Gå til innhold

Sortere en liste i Java


Anbefalte innlegg

Er helt fersk i java og skal lage en liste og sortere den.

 

Har en klasse "HybelFordeling" med følgende konstruktør:

public HybelFordeling(String startNavn, int startAlder, int startÅrStudert, int startVekttallBestått) {

 

Så ved hjelp av metoden finnPoengsum finner jeg en poengsum og skal sjekke denne opp mot poengGrense. Hvis poengsum<30 skal personen settes på en "venteliste" for hybel og den skal være sortert på poengsum.

 

Tenkte å kjøre en loop for å sjekke hver person, den delen tror jeg jeg skal greie, men hvordan kan jeg putte de på hver sin liste etterpå (over/under poengGrense) og til slutt sortere disse listen og skrive dem ut på skjermen?

Lenke til kommentar
Videoannonse
Annonse

Er det ei av øvingene vi skal gjennom eller er det noe du har funnet på sjøl? :tease:

 

Sortering kan gjøres sånn som det her (innsettingssortering):

 

int[] sorter(int[] tab){
int antallsort = 0;
int pos = 0;

while (antallsortert < tab.length){
 while (pos >= 0 && tab[pos] >= tab[pos+1]){
 	int temp = tab[pos];
 	tab[pos] = tab[pos+1];
 	tab[pos+1] = temp;

 	pos = pos-1;
 }

 antallsortert++;
 pos = antallsortert-1;
}
return tab;
}

 

 

Når det gjelder resten så har jeg fint lite å komme med, men jeg lurer på hvorfor klassen heter "hybelFordeling" og ikke f.eks. "hybelBeboer" som jo er det klassen faktisk beskriver?

Lenke til kommentar

Jeg ville laget en komparator og brukt Collections.sort til å sortere en List. F.eks.:

 

Lag en (jeg antar Java 1.5):

 

List<HybelFordeling> liste = new ArrayList<HybelFordeling>();

og putt alle elementene du vil sortere i denne. Lag en passende komparator:

 

public class HybelFordelingPoengsumComparator
   implements Comparator<HybelFordeling>
{
   public int compare( HybelFordeling hf0, HybelFordeling hf1 )
   {
       return hf0.finnPoengsum() - hf1.finnPoengsum();
   }
}

og bruk denne til å sortere listen:

 

Collections.sort( liste, new HybelFordelingPoengsumComparator() );

Endret av balletryne
Lenke til kommentar

spock84:

Det er øving 2, oppgave 4. ;) hehe

De studenter som har mindre sum enn poenggrense, blir satt på venteliste sortert etter poengsum.

 

Siden vi ikke har lært noe om arrays eller noe slikt enda tror jeg kanskje akkurat den setningen ikke skal være med i oppgaveteksten, men jeg er målbevisst og nekter å gi meg bare fordi vi ikke har lært det enda, satt oppe til 0130 i natt og jammen fikk jeg det til! :D

 

Brukte disse klassene:

import java.util.Hashtable;

import java.util.Vector;

import java.util.Collections;

import java.util.Enumeration;

 

Vil ikke gi hele koden siden det tydeligvis er flere her som trenger den til øvingen, hehe...

 

Det er HybelFordeling, for det er jo fordeling av hybler som er hele oppgaven. ;)

Lenke til kommentar

Poenget med øvinger er jo å lære, så nå synes jeg bare at du er kjip. Om du finner en bedre søkealgoritme enn f.eks. google eller fast, så vær så god, hold den for deg selv, men her ser jeg ikke helt poenget.

 

Kan for øvrig nevne at du tolker oppgaven "feil", men det er kanskje bevisst? ;) Fikk i hvertfall godkjent uten å lage selve ventelista som er nevnt i oppgaveteksten.

Endret av spock84
Lenke til kommentar

Saken er at det er 50 stk som skal ha godkjent denne øvingen, om jeg da legger ut hele kildekoden er det stor fare for plagiat.

Jeg har tipset om hvilke klasser jeg bruker og ved å foreta et par søk på google (slik jeg gjorde) finner du flere eksempler på hvordan det gjøres.

 

Kan legge den ut etter at fristen har gått ut. ;)

 

Og vet ikke om jeg har tolket oppgaven feil, er vel heller oppgaven som er skrevet feil, for på hvilken annen måte kan den tolkes? Mener at teksten "De studenter som har mindre sum enn poenggrense, blir satt på venteliste sortert etter poengsum." er ganske klar...

 

Vet at flere har fått den godkjent uten å gjøre den delen av oppgaven, men jeg liker utfordringer, så jeg løste den slik det var beskrevet. ;)

Lenke til kommentar
  • 2 uker senere...

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...