# ArrayList mit Objekten sortieren



## Laren (20. Feb 2011)

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


```
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 + "]";
	}


}
```


```
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());
			
		}
	}
	
}
```


----------



## nrg (20. Feb 2011)

in Auto müsstest du Comparable implementieren und die compareTo überschreiben. Dann würde ich noch deine ArrayList in Garage etwas typsicherer machen 
	
	
	
	





```
ArrayList<Object> liste = new ArrayList(10);
```
 > 
	
	
	
	





```
List<Auto> liste = new ArrayList<Auto>(10);
```
. Dann kannste deine liste mit Collections.sort sortieren.


----------



## eRaaaa (20. Feb 2011)

Laren hat gesagt.:


> Am liebten würde ich das über die getter machen, aber wie kann ich darauf zu greifen



Indem du nicht 

```
ArrayList<Object> liste = new ArrayList(10);
```
benutzt, sondern anstelle von Object eben Auto!


```
ArrayList<Auto> liste = new ArrayList<Auto>(10);
```
oder besser

```
List<Auto> liste = new ArrayList<Auto>(10); // import java.util.List;
```


----------



## Cola_Colin (20. Feb 2011)

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.


----------

