logo

Како упоредити два низа у Јави?

У Јави можемо упореди два низа упоређивањем сваког елемента низа. Јава Низови класа пружа две унапред дефинисане методе које се користе за упореди два низа у Јави .

У овом одељку ћемо научити како упоредити два низа Користећи Низови.једнако() метода и Арраис.деепЕкуалс() методом. Уз ово ћемо и научити како извршити дубоко поређење између два низа са правим примерима.

Два низа су једнака ако:

  • Они су истог типа.
  • Имају једнак број елемената.
  • Одговарајући парови елемената у оба низа морају бити једнаки.
  • Редослед елемената мора бити исти.
  • Две референце низа су једнаке ако су нулте.

Пре него што пређете на тему, прво размотрите следећи пример и погодите резултат.

АрраиЕкуалсЕкампле1.јава

стринг.цомпарето ц#
 public class ArrayEqualsExample1 { public static void main (String[] args) { //defining arrays to be compare int[] a1 = new int[] {1, 2, 3, 4, 5, 6, 7, 8}; int[] a2 = new int[] {1, 2, 3, 4, 5, 6, 7, 8}; //comparing references using == operator //works the same as a1.equals(a2) if (a1 == a2) System.out.println('Arrays are equal.'); else System.out.println('Arrays are not equal.'); } } 

Излаз:

 Arrays are not equal. 

У горњем примеру, а1 и а2 су две референце два различита објекта. Када упоредимо две референтне варијабле, добијамо излаз Низови нису једнаки, док су оба низа једнаке дужине и имају исте елементе. Не добијамо жељени резултат јер их оператор једнако (==) упоређује као објекат.

Сада имамо само опцију да упоредимо два низа, тј. упореди садржај (елементе) низа . Хајде да видимо како да упоредимо садржај низа.

Биће добро ако упоредимо елементе један по један. Да упоредимо садржај низа Јава Низови класа пружа следеће две методе за поређење два низа:

к1 к2 к3 к4
  • Метода екуалс().
  • Метода деепЕкуалс().

Низови.екуалс() Метод

Јава Низови класа пружа једнако() метод за упоређивање два низа. Итерира преко сваке вредности низа и упоређује елементе помоћу методе екуалс().

Синтакса:

 public static boolean equals(int[] a1, int[] a2) 

Он анализира два низа а1 и а2 који треба да се упореде. Метод враћа тачно ако су низови једнаки, иначе враћа нетачно. Тхе Класа низова има листу преоптерећених метода екуалс() за различите примитивне типове и једну за тип објекта.

Напомена: Док користите низ објеката, не заборавите да замените методу екуалс(). У супротном, добићемо излаз који враћа метода екуалс() класе Објецт.

АрраиЕкуалсЕкампле2.јава

 import java.util.Arrays; public class ArrayEqualsExample2 { public static void main (String[] args) { //defining array to compare int[] array1 = new int[] {'a', 'b', 'c', 'd', 'e'}; int[] array2 = new int[] {'a', 'b', 'c', 'd', 'e'}; //comparing two arrays using equals() method if (Arrays.equals(array1, array2)) System.out.println('Arrays are equal.'); else System.out.println('Arrays are not equal.'); } } 

Излаз:

 Arrays are equal. 

Хајде да видимо још један пример.

како поништити избор у гимп-у

АрраиЕкуалсЕкампле3.јава

 import java.util.Arrays; public class ArrayEqualsExample3 { public static void main (String[] args) { //defining arrays to compare int[] array1 = new int [] {21, 32, 36, 47}; int[] array2 = new int [] {11, 22, 33, 44}; int[] array3 = new int [] {21, 32, 36, 47}; System.out.println('Are array1 and array2 equal?' + Arrays.equals(array1, array2)); System.out.println('Are array1 and array3 equal?' + Arrays.equals(array1, array3)); } } 

Излаз:

 Are array1 and array2 equal? false Are array1 and array3 equal? true 

Видимо да је Низови.једнако() метода упоређује елементе низа. Овде се поставља питање шта ако низ има угнежђени низ или неке друге референце које се односе на различите објекте, али имају исте вредности.

Хајде да то разумемо кроз следећи пример.

АрраиЕкуалсЕкампле4.јава

јава матх.мин
 import java.util.Arrays; public class ArrayEqualsExample4 { public static void main (String[] args) { //defining array to compare String[] inarray1 = new String[] {'mango', 'grapes', 'plum', 'watermelon', 'apple'}; String[] inarray2 = new String[] {'mango', 'grapes', 'plum', 'watermelon', 'apple'}; Object[] array1 = {inarray1}; // array1 have only one element Object[] array2 = {inarray2}; // array2 also have only one element //comparing two arrays using equals() method if (Arrays.equals(array1, array2)) System.out.println('Arrays are equal.'); else System.out.println('Arrays are not equal.'); } } 

Излаз:

 Arrays are not equal. 

У горњем примеру видимо да метода екуалс() није у стању да изврши дубоко поређење. Да би се решио овај проблем, класа Јава Арраис обезбеђује још један метод деепЕкуалс() који дубоко упоређује два низа.

Арраис.деепЕкуалс() Метод

Јава Низови класа пружа другу методу деепЕкуалс() да дубоко упореди низ. Овде дубоко поређење значи да може да упореди два угнежђена низа произвољне дубине. Два низа референци објеката е1 и е2 су дубоко једнаке ако испуњавају било који од следећих услова:

  • е1=е2
  • екуалс(е2) враћа тачно.
  • Ако су е1 и е2 оба истог примитивног типа, преоптерећење методе Арраис.екуалс(е1, е2) враћа труе.
  • Ако су е1 и е2 оба низа референтних типова објеката, метод Арраис.деепЕкуалс(е1, е2) враћа труе.

Синтакса:

величине фонтова од латекса
 public static boolean deepEquals(Object[] a1, Object[] a2) 

Метод анализира два низа а1 и а2 који треба да се упореде. Враћа тачно ако су оба низа дубоко једнака, иначе враћа нетачно.

Хајде да направимо програм и дубоко упоредимо два низа користећи деепЕкуалс() метод класе Арраис.

АрраиЕкуалсЕкампле5.јава

 import java.util.Arrays; public class ArrayEqualsExample5 { public static void main (String[] args) { //defining array to compare String[] inarray1 = new String[] {'mango', 'grapes', 'plum', 'watermelon', 'apple'}; String[] inarray2 = new String[] {'mango', 'grapes', 'plum', 'watermelon', 'apple'}; Object[] array1 = {inarray1}; // array1 have only one element Object[] array2 = {inarray2}; // array2 also have only one element //comparing two arrays using equals() method if (Arrays.deepEquals(array1, array2)) System.out.println('Arrays are equal.'); else System.out.println('Arrays are not equal.'); } } 

Излаз:

 Arrays are equal.