Ermitteln der Schnittmenge zweier arrays
Mein Ziel ist es, Werte aus der Schnittmenge von arrays a und b und speichern Sie diese in ein neues array c, also den Ausdruck : 3,10,4,8. Wie ordne ich die gegeben Werte ein 3. array c ?
public static void main(String[] args) {
int a[] = {3, 10, 4, 2, 8};
int[] b = {10, 4, 12, 3, 23, 1, 8};
int[] c;
int i=0;
for(int f=0;f<a.length;f++){
for(int k=0;k<b.length;k++){
if(a[f]==b[k]){
//here should be a line that stores equal values of 2 arrays(a,b) into array c
}
}
}
for (int x=0; x<c.length; x++){
System.out.println(c[i]);
}
}
}
- Wenn dies nicht die Hausaufgaben, die streng erfordert array ickies, sehen die
Set
Schnittstelle - es ist etwas tricky, wenn oder Wartung erforderlich ist, aber nicht viel. - haben Sie den code dort, und ein i(ndex), der bei 0 beginnt, der nicht verwendet wird.
- check this link, commons.apache.org/collections/apidocs/org/apache/commons/...
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dies eine leichte Weise, das zu tun.
Arrays.asList
Rückkehr eineList<int[]
. ZweitoArray
können nie erhalten Sie ein array eines primitiven Typs. Generics funktionieren nicht mit primitiven.Hoffe, es hilft. Oder, wenn Sie Zeit haben, Komplexität Problem dann versuchen Java Gesetzt.
Müssen Sie zuerst Speicherplatz für das array:
Der schwierige Teil ist, herauszufinden, wie viel
SOME_SIZE
werden sollte. Da Sie die Berechnung einer Schnittmenge, die es werden können, ist die Größe der kleinstena
undb
.Schließlich weisen Sie ein element im array ist, Sie haben einfach
Nun müssen Sie verfolgen, wo
idx
geht. Ich schlage vor, beginnend mitidx = 0
und Inkrementieren Sie es jedes mal, wenn Sie ein neues element hinzufügenc
.wenn zulässig verwenden ArrayList für c, dessen anbauen array
auch wenn es erlaubt wird, Sortieren von arrays, empfehle ich Ihnen das Sortieren von kleineren array und iteriere über größere Arrays und binäre Suche in kleineren array.
Nehmen Sie Hilfe von temporären Variablen (aber das ist im Grunde das Rad neu erfinden, wenn Sie nicht erforderlich sind, dies zu tun) -