# Liste oder Array filtern



## Se7enDays (23. Mrz 2008)

Hallo,

ich habe hier eine Liste oder auch ein Array von Objekten, die ich nun nach bestimmten Kriterien filtern will. Die Arrays und Collections Klassen bieten hierzu keine Hilfestellung. Ich möchte einerseits über Verweise filtern können (also kein Objekt befindet sich mehrfach in der Liste). Andereseits möchte ich auch über Attribute der einzelnen Objekte filtern können (also keine zwei Objekte mit dem selben Wert im Attribut x). Wie kann man sowas am elegantesten implementieren?


----------



## andre111 (23. Mrz 2008)

in einer arraylist mit contains( Object o )... z.B:


```
ArrayList<String> list = new ArrayList<String>();
list.add( "Hans" );
list.add( "Peter" );
list.add( "Udo" );

boolean b1 = list.contains( "Hans" ); // true weil in list "Hans" enthalten ist
boolean b2 = list.contains( "Andre" ); // false weil in list "Andre" nicht enthalten ist
```


----------



## Marco13 (23. Mrz 2008)

Schau auch mal hier
http://www.java-forum.org/de/viewtopic.php?p=391425
Ansonsten ... sicherzustellen, dass keine zwei Objekte mit gleichen fields enthalten sind, wäre etwas aufwändiger - brute force wäre hier eine O(n²) Lösung wie

```
for int i=0; i<list.size(); i++)
{
    for int j=i+1; j<list.size(); j++)
    {
        if (list.get(i).getValue() == list.get(j).getValue()) 
        {
            list.remove(j);
            j--;
            i--;
        }
    }
}
```
Falls es zeitkritisch ist, kann man sich da vielleicht was besseres überlegen...


----------

