Java >> Java tutorial >  >> Java

Sådan sammenlignes to arrays i Java

Sådan sammenlignes to arrays i Java | Array-programmer i Java – 8 | I det forrige Java-program finder vi summen af ​​to matrixelementer. Nu i dette indlæg vil vi se, hvordan man sammenligner to arrays i Java.

Sammenlign to arrays i Java :- Hvis to arrays har samme reference eller samme længde og de indeholder lignende elementer, så er begge arrays ens, ellers er de ikke ens.

Sammenlign ved at bruge ==Operatør

Operatoren ==sammenligner to arrays baseret på referencen. Hvis begge arrays indeholder en lignende reference, er de ens.

public class CompareArray {
  
  // main method
  public static void main(String[] args) {
    // declare and initialize arrays
    int arr1[] = {10,20,30,40,50};
    int arr2[] = arr1;
    int arr3[] = {10,20,30,40,50};
    int arr4[] = {15,25,35,45,55};
    
    // compare arrays using == operator
    // compare arr1 and arr2
    if(arr1 == arr2)
      System.out.println("arr1 & arr2 are same");
    else 
      System.out.println("arr1 & arr2 are not same");
    
    // compare arr1 and arr3
    if(arr1 == arr3)
      System.out.println("arr1 & arr3 are same");
    else 
      System.out.println("arr1 & arr3 are not same");
    
    // compare arr1 and arr4
    if(arr1 == arr4)
      System.out.println("arr1 & arr4 are same");
    else 
      System.out.println("arr1 & arr4 are not same");
  }
}

Output:-

arr1 &arr2 er ens
arr1 &arr3 er ikke ens
arr1 &arr4 er ikke ens

Begrænsning med ==operator :- For referencedatatyper refererer ==operatoren kun til sammenligning, ikke værdien eller indholdet. For at løse dette problem kom equals() metoden ind i billedet. Vi havde diskuteret disse punkter i detaljer i deres respektive indlæg:- equals()-metoden i Java og ==vs equals() i Java.

Equals()-metoden i Object-klassen sammenligner også to objekter baseret på deres reference. Hvis vi vil sammenligne to objekter baseret på deres værdier, skal vi tilsidesætte equals()-metoden.

Heldigvis har Java en foruddefineret Arrays-klasse i java.util-pakken og indeholder flere metoder til at løse almindelige problemer relateret til arrays. Den indeholder flere equals() metoder til at sammenligne forskellige typer værdier. Disse er,

  • offentlig statisk boolesk lig med(byte[] a, byte[] a2)
  • offentlig statisk boolesk lig (int[] a, int[] a2)
  • offentlig statisk boolesk lig (kort[] a, kort[] a2)
  • offentlig statisk boolesk lig (lang[] a, lang[] a2)
  • offentlig statisk boolesk lig (char[] a, char[] a2)
  • offentlig statisk boolesk lig (dobbelt[] a, dobbelt[] a2)
  • offentlig statisk boolean lig med(float[] a, float[] a2)
  • offentlig statisk boolesk lig (boolesk[] a, boolesk[] a2)
  • offentlig statisk boolesk lig (Objekt[] a, Objekt[] a2)
  • offentlig statisk boolesk lig med(T[] a, T[] a2, komparator cmp)

Ud over equals()-metoden indeholder den også deepEquals()-metoden, prototype:- public static boolean deepEquals(Object[] a1, Objekt[] a2)

Sammenlign to arrays i Java ved hjælp af Arrays.equals()

Metoden equals() i klassen Arrays sammenligner arrays baseret på deres indhold eller værdier. Arrays.equal()-metoden returner sand, hvis de to specificerede arrays er ens med hinanden. Vi har allerede angivet equals()-metoden givet i Arrays-klassen. Lad os nu se Java-programmet til at sammenligne to arrays ved hjælp af Arrays.equals()-metoden.

import java.util.Arrays;

public class CompareArray {
  
  // main method
  public static void main(String[] args) {

    // declare and initialize arrays
    int arr1[] = {10,20,30,40,50};
    int arr2[] = arr1;
    int arr3[] = {10,20,30,40,50};
    int arr4[] = {15,25,35,45,55};
    
    // compare arrays using Arrays.equals() method
    // compare arr1 and arr2
    if(Arrays.equals(arr1, arr2))
      System.out.println("arr1 & arr2 are same");
    else 
      System.out.println("arr1 & arr2 are not same");
    
    // compare arr1 and arr3
    if(Arrays.equals(arr1, arr3))
      System.out.println("arr1 & arr3 are same");
    else 
      System.out.println("arr1 & arr3 are not same");
    
    // compare arr1 and arr4
    if(Arrays.equals(arr1, arr4))
      System.out.println("arr1 & arr4 are same");
    else 
      System.out.println("arr1 & arr4 are not same");
  }
}

Output:-

arr1 &arr2 er ens
arr1 &arr3 er ens
arr1 &arr4 er ikke ens

Begrænsning af Arrays.equals()-metoden :- Den kan kun sammenligne endimensionelle arrays. Det kan ikke sammenligne multidimensionelle arrays. Lad os demonstrere det gennem et program.

// limitation of Arrays.equals()
import java.util.Arrays;

public class CompareArray {
  
  // main method
  public static void main(String[] args) {

    // declare and initialize 2D arrays
    int arr1[][] = {{50,60},{70,80},{90,100}};
    int arr2[][] = arr1;
    int arr3[][] = {{50,60},{70,80},{90,100}};
    int arr4[][] = {{55,66},{77,88},{99,100}};
    
    // compare arrays using Arrays.equals() method
    // compare arr1 and arr2
    if(Arrays.equals(arr1, arr2))
      System.out.println("arr1 & arr2 are same");
    else 
      System.out.println("arr1 & arr2 are not same");
    
    // compare arr1 and arr3
    if(Arrays.equals(arr1, arr3))
      System.out.println("arr1 & arr3 are same");
    else 
      System.out.println("arr1 & arr3 are not same");
    
    // compare arr1 and arr4
    if(Arrays.equals(arr1, arr4))
      System.out.println("arr1 & arr4 are same");
    else 
      System.out.println("arr1 & arr4 are not same");
  }
}

Output:-

arr1 &arr2 er ens
arr1 &arr3 er ikke ens
arr1 &arr4 er ikke ens

I dette program indeholder arr1 og arr3 de samme array-elementer, men da Arrays.equals()-metoden ikke er i stand til at sammenligne multidimensionelle arrays, fik vi de forkerte resultater. For at løse dette problem skal vi bruge Arrays.deepEquals()-metoden .

Sammenlign to arrays i Java ved hjælp af Arrays.deepEquals()

Det returnerer sandt, hvis de to specificerede arrays er dybt ens med hinanden. Denne metode er egnet til brug med indlejrede arrays med vilkårlig dybde.

To array-referencer betragtes som dybt lige store,

  • Hvis begge er nul, eller
  • Hvis de henviser til arrays, der indeholder det samme antal elementer, og alle tilsvarende par af elementer i de to arrays er dybt ens.

Metodeerklæringen for deepEquals() er:- offentlig statisk boolean deepEquals(Object[] a1, Objekt[] a2)

Lad os nu se Java-programmet til at sammenligne 2 todimensionelle (2D) arrays ved hjælp af Arrays.deepEquals()-metoden.

import java.util.Arrays;

public class CompareArray {
  
  // main method
  public static void main(String[] args) {
    // declare and initialize 2D arrays
    int arr1[][] = {{50,60},{70,80},{90,100}};
    int arr2[][] = arr1;
    int arr3[][] = {{50,60},{70,80},{90,100}};
    int arr4[][] = {{55,66},{77,88},{99,100}};
    
    // compare arrays using Arrays.equals() method
    // compare arr1 and arr2
    if(Arrays.deepEquals(arr1, arr2))
      System.out.println("arr1 & arr2 are same");
    else 
      System.out.println("arr1 & arr2 are not same");
    
    // compare arr1 and arr3
    if(Arrays.deepEquals(arr1, arr3))
      System.out.println("arr1 & arr3 are same");
    else 
      System.out.println("arr1 & arr3 are not same");
    
    // compare arr1 and arr4
    if(Arrays.deepEquals(arr1, arr4))
      System.out.println("arr1 & arr4 are same");
    else 
      System.out.println("arr1 & arr4 are not same");
  }
}

Output:-

arr1 &arr2 er ens
arr1 &arr3 er ens
arr1 &arr4 er ikke ens

Bemærk:- Metoden Arrays.deepEquals() kan kun sammenligne multidimensional matrix, ikke den enkeltdimensionelle matrix.

Metoden Arrays.deepEquals() er i stand til at sammenligne alle multidimensionelle arrays. Her er et eksempel på sammenligning af tredimensionelt (3D) array,

import java.util.Arrays;

public class CompareArray {

  // main method
  public static void main(String[] args) {

    // declare and initialize 3D arrays
    int arr1[][][] = { {{1,2},{3,4},{5,6}}, {{7,8},{9,1},{2,3}} };
    int arr2[][][] = arr1;
    int arr3[][][] = { {{1,2},{3,4},{5,6}}, {{7,8},{9,1},{2,3}} };
    int arr4[][][] = { {{1,1},{3,3},{5,5}}, {{7,7},{9,9},{2,2}} };

    // compare arrays using Arrays.equals() method
    // compare arr1 and arr2
    if(Arrays.deepEquals(arr1, arr2))
      System.out.println("arr1 & arr2 are same");
    else 
      System.out.println("arr1 & arr2 are not same");

    // compare arr1 and arr3
    if(Arrays.deepEquals(arr1, arr3))
      System.out.println("arr1 & arr3 are same");
    else 
      System.out.println("arr1 & arr3 are not same");

    // compare arr1 and arr4
    if(Arrays.deepEquals(arr1, arr4))
      System.out.println("arr1 & arr4 are same");
    else 
      System.out.println("arr1 & arr4 are not same");
  }
}

Output:-

arr1 &arr2 er ens
arr1 &arr3 er ens
arr1 &arr4 er ikke ens

Konklusion

1) Hvis du vil sammenligne et-dimensionelt array, så brug Arrays.equals()-metoden.
2) Hvis du vil sammenligne multi-dimensional array (2D, 3D, 4D og e.t.c), så brug Arrays.deepEquals () metode.


Java tag