Array-Differenzmenge bestimmen

starforcee

Grünschnabel
Hallo zusammen, ich habe eine recht einfache Frage, für die ich jedoch keine Antwort habe.

Ich möchte die Differenz-Menge zweier Arrays bestimmen; d.h. ich möchte sehen, welche Zahlen des einen Arrays im anderen nicht vorkommen.

Hier das Beispiel:

Array Server: 1,2,3,4,5,6,7,8
Array Client: 1,2,3,4,8

Die Differenzmenge wäre in diesem Fall ja 5,6 und 7.

Ich habe versucht, mit einer Funktion die Gleichheit der Arryas zu überprüfen, aber auf die Weise komme ich nicht weiter. Hat jemand eine Idee?

Code:
for ( int i = 0; i < Array2.length; i++ ) {
   for (int value: Array2) {
      if (Array2[i] == Array1[i]) {
        System.out.println("Platz"+i+" stimmt");
      }
      else 
      {
       System.out.println("Platz"+i+" stimmt nicht");
      }
     }
    }
 
Evtl. hilft dir das weiter?!
Code:
package de.nurn.test;

import java.util.ArrayList;

public class GLTEST
{

    public static void main(String[] args)
    {
        ArrayList<String> l1 = new ArrayList<String>();
        l1.add("1");
        l1.add("2");
        l1.add("3");
        l1.add("4");
        
        ArrayList<String> l2 = new ArrayList<String>();
        l2.add("1");
        l2.add("2");
        l2.add("5");
        l2.add("4");
        
        ArrayList<String> diff = new ArrayList<String>();
        
        for(String cur : l1) {
            if(!l2.contains(cur))
                diff.add(cur);
        }
        
        for(String cur : l2) {
            if(!l1.contains(cur))
                diff.add(cur);
        }
        
        for(String cur : diff) {
            System.out.println("--> " + cur);
        }
    }

}
Gruß
Gerrit
 
Zuletzt bearbeitet:
Aus dem Kopf, kompilerbarkeit wird nicht garantiert.

Java:
Integer[] serverArray = new Integer[] {1,2,3,4,5,6,7,8};
Integer[] clientArray = new Integer[] {1,2,3,4,8};
 
// konvertiere die Arrays zu Mengen.
Set<Integer> serverSet = new HashSet<Integer>((Collection<Integer>)Arrays.asList(serverArray));
Set<Integer> clientSet = new HashSet<Integer>((Collection<Integer>)Arrays.asList(clientArray));
  
// erzeuge die Differenz Server in Client Menge (Server\Client) 
serverSet.removeAll(clientSet);
 
System.out.println(serverSet); // {5, 6, 7}
 
Zuletzt bearbeitet:
Zurück