ArrayList mit Objekten sortieren

Laren

Bekanntes Mitglied
Hi,

Ich hab eine Klasse Auto und ein Klasse Garage. Über ArrayList, sind in der Klasse Garage ein paar Auto Objekte.
In der Klasse Auto habe ich getter und setter Methode, die mir das Model, die Farbe und die Anzahl an Türen zurück geben.
Jetzt will ich die Garage nach z.b. Autotypen sortieren und vergleichen, ob ein Typ 2 mal drin vor kommt. Am liebten würde ich das über die getter machen, aber wie kann ich darauf zu greifen, oder gibt es einen besseren Weg?

Viele Grüße

Java:
package ArrayListe;

public class Auto {
	String model;
	int tueren;
	String farbe;
	
	public Auto(String model, int tueren, String farbe)
	{
		this.model=model;
		this.tueren = tueren;
		this.farbe = farbe;
	}

	public String getModel() {
		return model;
	}

	public void setModel(String model) {
		this.model = model;
	}

	public int getTueren() {
		return tueren;
	}

	public void setTueren(int tueren) {
		this.tueren = tueren;
	}

	public String getFarbe() {
		return farbe;
	}

	public void setFarbe(String farbe) {
		this.farbe = farbe;
	}

	@Override
	public String toString() {
		return "Auto [model=" + model + ", tueren=" + tueren + ", farbe="
				+ farbe + "]";
	}


}
Java:
package ArrayListe;

import java.util.*;
public class Garage {

	/**
	 * @param args
	 */

	ArrayList<Object> liste = new ArrayList(10);
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Garage ls = new Garage();
		ls.Listeanlegen();
		ls.Listeausgeben();
		
	}
	public  void Listeanlegen()
	{
		
		Auto vw = new Auto("Golf",4,"grün");
		Auto mitsubishi = new Auto("Colt",4,"rot");
		Auto audi = new Auto("Quatro",4,"grün");
		Auto bmw = new Auto("318",4,"gelb");
		
		liste.add(vw);
		liste.add(mitsubishi);
		liste.add(audi);
		liste.add(bmw);	
		
	}

	public void Listeausgeben()
	{
		for (int i=0;i < liste.size();i++)
		{
			System.out.println(liste.get(i).toString());
			
		}
	}
	
}
 
in Auto müsstest du Comparable implementieren und die compareTo überschreiben. Dann würde ich noch deine ArrayList in Garage etwas typsicherer machen
Code:
ArrayList<Object> liste = new ArrayList(10);
>
Code:
List<Auto> liste = new ArrayList<Auto>(10);
. Dann kannste deine liste mit Collections.sort sortieren.
 
Am liebten würde ich das über die getter machen, aber wie kann ich darauf zu greifen

Indem du nicht
Java:
 ArrayList<Object> liste = new ArrayList(10);
benutzt, sondern anstelle von Object eben Auto!

Java:
 ArrayList<Auto> liste = new ArrayList<Auto>(10);
oder besser
Java:
 List<Auto> liste = new ArrayList<Auto>(10); // import java.util.List;
 
Sortieren mit: Collections.sort() unter Verwendung von jeweils für Marke, Farbe, wasAuchImmer angepasstem Comparators.

Das könntest du im getter mit einer copy deiner eigentlichen ArrayList machen und diese copy dann zurückliefern.

Zur Überprüfung, ob ein Typ 2fach vorkommt, kannst du deine ArrayList eben einfach durchsuchen und mitzählen.
 
Zuletzt bearbeitet:

Neue Themen


Zurück
Oben