2016-08-27 1 views
0

Ich habe ein Problem, den Unterschied zwischen zwei Arrays in Java zu finden, mein Fall ist wie vorstellen, wir haben zwei Arrays. Array A = {1 , 3 , 5 , 7 ,9 } und Array B = {1 ,3 , 4 ,5 , 6 ,7 , 10}. Ich möchte zwei Ergebnisse haben. Das erste Ergebnis ist ein Array, das die fehlenden Objekte vom Array "A" findet, und das zweite Ergebnis ist ein Array, das die hinzugefügten Objekte im Array "B" findet. das erste Ergebnis sollte wie A'={9} sein und das zweite Ergebnis ist wie B'={4,6,10}.
Vielen Dank für Ihre Kommentare.
Kreuzung zwischen zwei Arrays

+0

, was Sie bisher versucht haben? –

+0

die Antworten [hier] (http://stackoverflow.com/questions/13732312/differences-between-two-arrays) können Ihnen helfen – guleryuz

+0

Posten Sie einige Code zeigen Sie uns Ihre Mühe –

Antwort

0

ich folgenden Code denken hilft Ihnen

/* package whatever; // don't place package name! */ 

import java.util.*; 
import java.lang.*; 
import java.io.*; 

/* Name of the class has to be "Main" only if the class is public. */ 
class Ideone 
{ 
public static void main (String[] args) throws java.lang.Exception 
{ 

    // your code goes here 
    Map<Integer,Integer> map1=new HashMap<Integer,Integer>(); 
    int A[]={1 , 3 , 5 , 7 ,9 }; 
    int B[]={1 ,3 , 4 ,5 , 6 ,7 , 10}; 
    int i; 
    for(i=0;i<B.length;i++) 
    map1.put(B[i],1); 
    for(i=0;i<A.length;i++) 
    { 

      Integer v1=map1.get(A[i]); 
     if(v1==null) 
     { 

      System.out.println("Missing number="+A[i]); 
     } 

    } 

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

     Integer v1=map1.get(A[i]); 

     if(v1!=null) 
     {int val=v1; 
      map1.put(A[i],val+1); 

    //  System.out.println("Missing number="+A[i]); 
     } 

    } 
    for(i=0;i<B.length;i++) 
    { 
      Integer v1=map1.get(B[i]); 
     if(v1!=null && v1<2) 
     { 

      System.out.println("Added element in B="+B[i]); 
     } 

    } 


} 
} 
+0

das löste mein Problem, danke für deine Zeit Mann. –

+0

Ich habe noch eine Frage Können Sie beschreiben, was dieser Code macht? –

+0

Zuerst speichern Sie alle Elemente des zweiten Arrays in einer Karte. und dann durchqueren Sie das erste Array (wählen Sie Element eins nach dem anderen) und halten Sie das Element checking in der Karte vorhanden oder nicht. Wenn Element in map vorhanden ist, bedeutet dies, dass dieses Element nicht fehlt und wenn Element nicht in map vorhanden ist, bedeutet dies, dass dieses Element des ersten Arrays fehlt. – Abhishek

0

verwenden diese Logik

int a1[n1],a2[n2],count1,count2,temp; 

for(i=0;i<n1;i++) 
{ temp=0; 
    for(j=0;j<n2;j++) 
    { 
    if(A[i]==B[j]) 
     temp=1; 
    } 
if(temp==0) 
    {a1[count1]=A[i]; 
    count1++; 
    } 
} 

for(i=0;i<n2;i++) 
{ temp=0; 
    for(j=0;j<n1;j++) 
    { 
    if(A[i]==B[j]) 
     temp=1; 
    } 
if(temp==0) 
    {a2[count2]=B[i]; 
    count2++; 
    } 
} 

Jetzt Feld A1 [] die Elemente enthält, die in A [], aber nicht in B [] und a2 [] enthält die Elemente, die in B [], aber nicht in A [].

0

Verwendung removeAll:

List<Integer> a = Arrays.asList(1 , 3 , 5 , 7 ,9); 
    List<Integer> b = Arrays.asList(1 ,3 , 4 ,5 , 6 ,7 , 10); 

    ArrayList<Integer> c = new ArrayList<>(a); 
    ArrayList<Integer> d = new ArrayList<>(b); 


    c.removeAll(b); 
    d.removeAll(a); 

    System.out.println(c); 
    System.out.println(d); 
Verwandte Themen