في جافا، يمكننا ذلك قارن بين صفيفين من خلال مقارنة كل عنصر من عناصر المصفوفة. جافا المصفوفات يوفر الفصل طريقتين محددتين مسبقًا يتم استخدامهما لـ قارن بين صفيفين في جافا .
في هذا القسم سوف نتعلم كيفية مقارنة مصفوفتين استخدام المصفوفات.تساوي() طريقة و Arrays.deepEquals() طريقة. جنبا إلى جنب مع هذا، وسوف نتعلم أيضا كيفية إجراء مقارنة عميقة بين المصفوفتين مع الأمثلة المناسبة.
يكون المصفوفتان متساويتين إذا:
- هم من نفس النوع.
- لديهم عدد متساو من العناصر.
- يجب أن تكون أزواج العناصر المقابلة في كلا المصفوفتين متساوية.
- يجب أن يكون ترتيب العناصر هو نفسه.
- يكون مرجعا الصفيف متساويين إذا كانا فارغين.
قبل الانتقال إلى الموضوع، أولاً، خذ بعين الاعتبار المثال التالي وخمن النتيجة.
ArrayEqualsExample1.java
كومة الفرز
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.
في المثال أعلاه، a1 وa2 هما المرجعان لكائنين مختلفين. عندما نقارن بين متغيرين مرجعيين، نحصل على النتيجة المصفوفات ليست متساوية، في حين أن كلا المصفوفتين متساويتان في الطول، ولهما نفس العناصر. نحن لا نحصل على المخرجات المطلوبة لأن معامل التساوي (==) يقارنها ككائن.
الآن، لدينا فقط خيار لمقارنة صفيفين، أي. قارن محتوى (عناصر) المصفوفة . دعونا نرى كيفية مقارنة محتويات المصفوفة.
سيكون من الجيد أن نقارن العناصر واحدًا تلو الآخر. لمقارنة محتوى مجموعة Java المصفوفات توفر الفئة الطريقتين التاليتين لمقارنة صفيفين:
سلسلة إلى أعداد صحيحة
- يساوي () الأسلوب
- طريقة DeepEquals ().
طريقة Arrays.equals()
جافا المصفوفات يوفر الفصل يساوي () طريقة لمقارنة مصفوفتين. يتكرر على كل قيمة في المصفوفة ويقارن العناصر باستخدام طريقة يساوي ().
بناء الجملة:
public static boolean equals(int[] a1, int[] a2)
يقوم بتوزيع صفيفين a1 وa2 للمقارنة. تُرجع الطريقة صحيحًا إذا كانت المصفوفات متساوية، وإلا تُرجع خطأ. ال فئة المصفوفات يحتوي على قائمة من طريقة يساوي () المحملة بشكل زائد لأنواع بدائية مختلفة وواحدة لنوع الكائن.
ملحوظة: أثناء استخدام مصفوفة الكائنات، لا تنس تجاوز طريقة يساوي (). وإلا، فسنحصل على الإخراج الذي يتم إرجاعه بواسطة طريقة يساوي () لفئة الكائن.
ArrayEqualsExample2.java
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.
دعونا نرى مثالا آخر.
نقل وسائل الإعلام
ArrayEqualsExample3.java
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
نرى أن المصفوفات.تساوي() الطريقة تقارن عناصر المصفوفة. هنا، يطرح سؤال ماذا لو كانت المصفوفة تحتوي على مصفوفة متداخلة أو بعض المراجع الأخرى التي تشير إلى كائن مختلف ولكن لها نفس القيم.
دعونا نفهم ذلك من خلال المثال التالي.
ArrayEqualsExample4.java
اختبار أداء
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.
في المثال أعلاه، نرى أن طريقة يساوي () غير قادرة على إجراء مقارنة عميقة. لحل هذه المشكلة، توفر فئة Java Arrays طريقة أخرى DeepEquals() تقارن بشكل عميق بين الصفيفين.
طريقة Arrays.deepEquals()
جافا المصفوفات يوفر الفصل طريقة أخرى عميق يساوي () لمقارنة المصفوفة بعمق. هنا، تعني المقارنة العميقة أنه يمكن مقارنة صفيفتين متداخلتين بعمق عشوائي. مرجع كائني الصفيفين e1 وe2 متساويان تمامًا إذا كانا يحملان أيًا من الشروط التالية:
- e1=e2
- يساوي (e2) يُرجع صحيحًا.
- إذا كان كل من e1 وe2 من نفس النوع البدائي، فإن التحميل الزائد للطريقة Arrays.equals(e1, e2) يُرجع صحيحًا.
- إذا كان كل من e1 وe2 مصفوفتين من أنواع مرجع الكائنات، فإن الطريقة Arrays.deepEquals(e1, e2) ترجع صحيحًا.
بناء الجملة:
إدراج الخلية في
public static boolean deepEquals(Object[] a1, Object[] a2)
تقوم الطريقة بتوزيع الصفيفين a1 وa2 المراد مقارنتهما. تُرجع صحيحًا إذا كان كلا المصفوفتين متساويين تمامًا، وإلا تُرجع خطأ.
لنقم بإنشاء برنامج ونقارن بشكل عميق بين صفيفين باستخدام ملف عميق يساوي () طريقة فئة المصفوفات.
ArrayEqualsExample5.java
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.