java.util.List: Sortierung nicht nach bestimmten Attribut?

isowiz

Mitglied
Ich weiß, wie man eine Liste nach einem bestimmten Attribute sortieren kann. Das Sortieren einer Lampe sieht zb. so aus:
Java:
public class Lampe implements Comparable<Lampe>
{
    private int lumen; // 0 bis 100
	private int groesse; // 1 bis 10
    private String name;
        
    public Lampe( int lumen, int groesse )
	{
        this.lumen = lumen;
		this.groesse = groesse;
    }
 
    public int compareTo( Lampe c ) 
	{
        if( lumen < c.lumen )
            return -1;
        if( lumen > c.lumen )
            return 1;
            
        return 0;
    }
}
Nun werden diese Lampen aber immer nach Lumen sortiert. Wie bekomme ich es hin, dass ich beeinflussen kann, ob die Lampe nach Lumen oder(!) nach Größe sortiert wird, so wie ich das gerade brauche? Die Methode compareTo() kann ich ja leider nicht ergänzen.

Muss ich dafür zwei verschiedene java.util.Comparator erstellen? Oder gibts dafür eine bessere Lösung?
 
du kannst auch nur einen konfigurierbaren Comparator verwenden oder gar (in ganz einfachen Programmen, sonst besser nicht) in der Klasse selber die Sortierung z.B. per statischer Variable umstellen,
mit if/ else in compareTo darauf eingehen und entweder so oder so vergleichen
 
ein Comparator mit einem boolean preferDasEine true/ false, setter/ getter
und wiederum compareTo, welches mit if/ else darauf Rücksicht nimmt
 

Neue Themen


Zurück
Oben