Java Teilmenge von Arrays ermitteln?

5 Antworten

Vom Beitragsersteller als hilfreich ausgezeichnet

Nimm Schleifen

for (int i = 0; i <= a.length; i++) {

 for (int j = 0; j <= b.length; j++) {

  if (a[i] == b[j]) {

system.out.printline(a); // Oder was auch immer du dann machen willst

}

}

}


achalisma 
Beitragsersteller
 19.03.2018, 01:36

so könnte ich mir das vorstellen, aber wie gebe ich dann den jeweiligen buchstaben aus, der in dem anderen array enthalten ist?

Xenortus  19.03.2018, 06:14
@achalisma

Dann gibst unter der if aus:

System.out.println("a =" + a);

System.out.println("b =" + b) ;

Das ganze tut nichts weiter, als 'a' zu nehmen, dort immer einen Inhalt der im array enthalten ist und vergleicht diesem Inhalt mit allem Inhalten von 'b'.

Danach geht es in den nächsten Inhalt von 'a' und vergleicht den dann mit allen von 'b'.

Dafür gibt es in Java keinen "Standardardbefehl". Im Endeffekt musst Du das ausprogrammieren. Ein möglicher Algorithmus wäre:

  1. Suche das erste Element von b in a
  2. Nicht vorhanden? => Ende - nicht gefunden
  3. Vorhanden: Suche ab dieser Position in a, ob auch alle weiteren Elemente von b sich in a anschließen.
  4. Ja? => Ende - gefunden
  5. Nein? Suche nächste Position des ersten Elements von b in a. Mache weiter bei Schritt 2.

Wenn du statt char ein Arrayobjekt benutzt, das eine equals Methode kennt, dann gehts so :

        String[] a =
        { "a", "b", "c" };

        String[] b =
        { "a", "b" };

        if (Arrays.asList(a).containsAll(Arrays.asList(b)))
        {

            System.out.println("ja");
        } else
        {
            System.out.println("nein");
        }
Woher ich das weiß:Berufserfahrung – Java-Entwickler von Batch- und Webanwendungen

ohwehohach  17.03.2018, 09:35

Jetzt stellt sich halt die Frage, ob es notwendig ist, dass alle Elemente von b hintereinander in a vorkommen oder nicht, oder ob sie nur irgendwie in a enthalten sein müssen.

Was willst du genau prüfen?

das Array b wird nie das Array a enthalten, da das Array b chars enthält und keine Chararrays.

Woher ich das weiß:Berufserfahrung – Java-Entwickler von Batch- und Webanwendungen

Geht nicht Arrays.asList(a).containsAll(Arrays.asList(b))?