# Alle Elemente von zwei Listen vergleichen



## SmartGuy (13. Okt 2009)

Hallo, ich möchte überprüfen ob zwei Listen (LinkedList<Objekt> a und LinkedList<Objekt> b) identisch sind. Sie sind identisch, wenn sie

gleich groß sind
alle Elemenre von liste a in liste b vorhanden sind

Ich hab nun folgendes: 

```
int anzahldurchlaeufe = 5;
int zahl0erTrueWerte++;
booelan listenVergleich = false; 

if (a.size()==b.size()){
	for (int v = 0; v < b.size(); v++) {
		if (a.contains(b.get(v))) {
			listenVergleich = true; 
			zahlerTrueWerte++;
		} else {
			listenVergleich = false;
		}
	}
	for (int k = 0; k < anzahldurchlaeufe; k++) {
		if (listenVergleich==true){
			tuwas();				
		}	
	}

}
```

Iwie passt das Ergebnis aber überhaupt nicht!


----------



## SlaterB (13. Okt 2009)

wenn ein Element in einer anderen Liste nicht drin ist, ist die Aussage 'die Listen sind ungleich' korrekt
wenn aber ein Element in einer anderen Liste drin ist, kannst du daraus doch nicht folgern, dass die Listen gleich sind,

> listenVergleich = true; 
hat in der Schleife also nix zu suchen,
VOR der Schleife kannst du die Variable auf true setzen, danach wird sie höchstens zu false, nie zu true


----------



## bbone (13. Okt 2009)

//Edit: Da war wohl einer schneller

Wenn alle werte auf false laufen und nur der letzte wieder auf true steht am Ende true in listenVergleich oder?
Ich würd breaken nach dem false, zwar nicht schön aber tuts in dem fall.


----------



## Michael... (13. Okt 2009)

Wenn Objekte nicht doppelt vorkommen können oder das egal ist, ginge:

```
public boolean isEqual(LinkedList listA, LinkedList listB) {
	return listA.containsAll(listB) && listB.containsAll(listA);
}
```


----------



## maki (13. Okt 2009)

Und warum nicht gleich

```
a.equals(b)
```
?


----------



## Schandro (13. Okt 2009)

maki hat gesagt.:


> Und warum nicht gleich
> 
> ```
> a.equals(b)
> ...


Weil dann auch die Reihenfolge der Elemente gleich sein müsste.


----------



## maki (13. Okt 2009)

Schandro hat gesagt.:


> Weil dann auch die Reihenfolge der Elemente gleich sein müsste.


Ok, überzeugt..


----------



## ARadauer (13. Okt 2009)

Schandro hat gesagt.:


> Weil dann auch die Reihenfolge der Elemente gleich sein müsste.



liste clonen, sortieren mit equals vergleichen?


----------



## Landei (13. Okt 2009)

```
public boolean isEqual(LinkedList listA, LinkedList listB) {
    return new HashSet(listA).equals(new HashSet(listB));
}
```


----------



## SlaterB (13. Okt 2009)

A, A, B wäre dann ja equal A, B 
okok, size ist schnell geprüft


----------



## AlexH (14. Okt 2009)

Michael... hat gesagt.:


> Wenn Objekte nicht doppelt vorkommen können oder das egal ist, ginge:
> 
> ```
> public boolean isEqual(LinkedList listA, LinkedList listB) {
> ...



Ich denke, mann braucht auch noch die Methode *public boolean equals(Object obj)* für die Klassen von List überschreiben.


----------

