» »

[Java] Comparable in starostni razredi

[Java] Comparable in starostni razredi

marjan_h ::

Sortirati moram osebe, prednost imajo otroci do 15 let nato starejši nad 65 leti. Če kateri spada v isto starostno skupino, se sortira po spolu; prednost imajo punce.

public class Oseba implements Comparable<Oseba>{
	String ime;
	int starost;
	char spol;
	
	public int compareTo(Oseba o){
		if ((this.starost < 16) && ( 16 < o.starost && o.starost < 65)){
			return -1;
		}
		else if ((o.starost < 16) && ( 16 < this.starost && this.starost < 65)){
			return 1;
		}
		else if ((this.starost > 65) && (16 < o.starost && o.starost < 65)){
			return -1;
		}
		//... in tako naprej
		
	}
}


Na takšen način bi moral zajeti vse možne kombinacije, kar je preveč kode in še težko se bere. Zanima me kako bi stvar hitreje in bolje naredil?

Mavrik ::

Tako da boljše organiziraš primerjave in narediš metode:


private static int starostnaSkupina(Oseba o) {
   if (o.starost < 16)  return 0;
   if (o.starost > 65) return 1;
   return 2;
}

public int compareTo(Oseba o) {

   if (starostnaSkupina(this) == starostnaSkupina(o)) {
       return this.jePunca() ? -1 : 1;
   }

   return starostnaSkupina(this) - starostnaSkupina(o);
}



Oštevilčiš starostne skupine in uporabiš dejstvo, da se 0, 1, 2 pač posortirajo v ta vrstni red a ne? :)

To je načeloma tudi v spolšnem ok pravilo: če se znajdeš v tem, da pišeš dolge klobasaste if pogoje, se ti verjetno splača narediti metodo, ki poenostavi branje kode.
The truth is rarely pure and never simple.

Zgodovina sprememb…

  • spremenil: Mavrik ()

marjan_h ::

Aja, lepo. Hvala.


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

[Java] Podatkovni tip

Oddelek: Programiranje
233831 (3483) piki12
»

[Java] Sortiranje razredov

Oddelek: Programiranje
101461 (1208) Spura
»

[C#] Deserializacija

Oddelek: Programiranje
181869 (1472) Cvenemir
»

c# primerjava vrednosti dveh tipov object (brez da vem kateri tip sta)

Oddelek: Programiranje
101113 (900) Looooooka
»

[Java] Sortiranje objektov

Oddelek: Programiranje
192858 (2858) tjaz24

Več podobnih tem