Java Teilmenge von Arrays ermitteln?
Angenommen ich habe 2 char-Arrays
char[] a = {'a','b','c')
char[] b = {'a','b');
Wie kann ich nun testen, ob das Array b in a enthalten ist, bzw. ob die Elemente von b in a enthalten sind?
5 Antworten
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
}
}
}
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:
- Suche das erste Element von b in a
- Nicht vorhanden? => Ende - nicht gefunden
- Vorhanden: Suche ab dieser Position in a, ob auch alle weiteren Elemente von b sich in a anschließen.
- Ja? => Ende - gefunden
- 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");
}
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.
Geht nicht Arrays.asList(a).containsAll(Arrays.asList(b))?
so könnte ich mir das vorstellen, aber wie gebe ich dann den jeweiligen buchstaben aus, der in dem anderen array enthalten ist?