Collections.sort(..); | Anwendung

Status
Nicht offen für weitere Antworten.

Dit_

Bekanntes Mitglied
Hallo

follgendes Problem

Ich habe eine Abstrakte Klasse Figur. Dann habe ich 3 Klassen (Kreis, Rechteck, Linie) die von der Klasse Figur erben.

Java:
public abstract class Figur extends Object implements Cloneable, Comparable<Figur> {
...

public int compareTo(Figur figur2) {
		return (int) (getFlaeche() - figur2.getFlaeche());
}
...
}

Mein Modell soll eine Liste mit figuren sortieren.
Java:
public class Modell {
	
	private ArrayList<Figur> figuren;
...
	public void sortFigures() {
		Collections.sort(figuren);
	}
...
}
Ich weiss nicht genau wie ich die sort-methode einsetzen soll, hier im Forum gefundene Lösungen haben nichts gebracht 🙁

Hat jemand ne Idee ?

Danke schon mal.
 
Hi,

dein Ansatz ist richtig. Sieht denn das Resultat anders aus als du erwartet hast?

Was mir so auffällt: der Zusatz "extends Object" müsste überflüssig sein, weil JEDE Java-Klasse (auch eigene) implizit von Object erbt.

Hab mal eben ein Miniprogramm geschrieben, und das klappt.

Figur ist bei mir der Einfachheit halber nicht abstrakt.
Bei dir könnte die abstrakte Klasse Figur von Comparable abgeleitet sein, die Methode compare implementieren und auch die Attribute "id" und "flaeche" enthalten.
Java:
package de.forum;
import java.util.*;

public class Sortierer {

	public static void main(String[] args) {
		ArrayList<Figur> figuren = new ArrayList<Figur>();
		figuren.add(new Figur("a", 80));
		figuren.add(new Figur("b", 10));
		figuren.add(new Figur("c", 50));
		figuren.add(new Figur("d", 20));
		
		Collections.sort(figuren);
		
		for (Figur f: figuren) {
			System.out.println(f.getId()+ " "+f.getFlaeche());
		}
	}
}
Java:
package de.forum;

public class Figur implements Comparable<Figur> {
	
	private int flaeche;
	private String id;
	
	public Figur(String id, int flaeche) {
		this.flaeche=flaeche;
		this.id=id;
	}

	public String getId() {
		return id;
	}
	public int getFlaeche() {
		return flaeche;
	}

	public void setFlaeche(int flaeche) {
		this.flaeche = flaeche;
	}

	public int compareTo(Figur f2) {
		return this.getFlaeche() - f2.getFlaeche() ;
	}
}
 
Zuletzt bearbeitet:
Ok Danke!
compareTo-Methode entscheidet wie die Figuren sortiert werden, aufsteigend oder absteigend...
habe die ganze Zeit Figuren sortiert die eigentlich schon sortiert waren :lol:
 
Ne es stimmt schon alles
ich (noob) habe nur die Figuren schon sortiert erstellt 🙂
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Zurück
Oben