# Menge -> Vereinigung



## sh33p (29. Dez 2010)

Moin. Ich frage mich, wieso meine statische Methode zur Vereinigung von 2 Mengen nicht funktioniert..Wenn ich durch eine Ausgabe das Ergebnis überprüfen will, so stehen in dem Array weiterhin nur null Referenzen..


```
public class Menge   {

 Integer[] array = new Integer[5];
static int count= -1;

public static Menge vereinige(Menge m2, Menge m1)

        {
           Menge m3 = new Menge();     // neue Menge/Array

            int zaehler = 0;

            boolean found = false;

            if (zaehler > m1.array.length)

            {
                m3.array = new Integer[m1.array.length + m2.array.length];
                // m1 in m3 kopieren

                for (int i = 0; i < m3.array.length - 1; i++)

                {

                    m3.array[i] = m1.array[i];

                    zaehler++; 
                }

               for(int j = 0; j < m2.array.length; j++) //
                {
                    

                    for (int i = 0; i < zaehler; i++)

                    {
                       // wenn element in m2 und m3 vorhanden, dann foudn auf true setzen

                        if (m2.array[j] == m3.array[i])

                        {

                           found = true;
                        }

                    }

                   //jetzt prüfen ob unser akteulles element aus m2 in m3 schon vorhanden ist

                    if(found)

                    {

                        //Nichts machen. Element schon vorhanden
                    }

                    else //Element wurde nicht gefunden. Wir hängen es an m3 dran

                    {

                        m3.array[zaehler-1] = m2.array[j]; //m2[j] an m3 anhängen


                        m2.array[j] = null; // m2[j] 'löschen

                    }

                    found = false

                    }

           }    m3.ausgeben();
            return m3;

        }
}
```


----------



## eRaaaa (30. Dez 2010)

```
int zaehler = 0;
 
            if (zaehler > m1.array.length)
```

sieht verdächtig falsch aus....


----------



## Landei (30. Dez 2010)

Warum benutzt du für deine Mengen intern ein Array und nicht ein Set (das ist übrigens englisch und heißt "Menge")? Dann reduziert sich dein Problem auf 

```
Set<Integer> newSet = new HashSet<Integer>();
newSet.addAll(m1.set);
newSet.addAll(m2.set);
return newSet;
```

Ansonsten kannst du ein Set auch als Zwischenresultat verwenden:

```
Set<Integer> newSet = new TreeSet<Integer>();
for(Integer i : m1.array) {
   newSet.add(i);
}
for(Integer i : m2.array) {
   newSet.add(i);
}

//zurück in ein Array kopieren
int[] newArray = new int[newSet.size()];
Iterator<Integer> it = newSet.iterator();
for(int i = 0; i < newArray.length; i++) {
   newArray[i] = it.next();
}
```


----------

