الدالتان Arrays.equals وtoString
مقارنة المصفوفات وطباعتها
الدالتان Arrays.equals وtoString درس مجاني في Java Academy على CoddyKit. هذا هو الدرس 4 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Java Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Java Academy 4 دروس في المجموع.
المقارنة والطباعة
لا تعيد المصفوفات تعريف equals أو toString بطريقة مفيدة. توفر فئة الأدوات Arrays الدالتين equals وtoString لفحص محتويات العناصر فعليًا.
لماذا يفشل ==
يؤدي استخدام == مع المصفوفات إلى مقارنة المراجع، لا المحتويات. ولا تتساوى مصفوفتان مختلفتان تحتويان على عناصر متطابقة وفقًا لـ ==.
public class Main {
public static void main(String[] args) {
int[] a = {1, 2, 3};
int[] b = {1, 2, 3};
System.out.println(a == b);
}
}Arrays.equals
تعيد Arrays.equals(a, b) القيمة true عندما تكون للمصفوفتين الطول نفسه والعناصر المتساوية في المواضع نفسها.
import java.util.Arrays;
public class Main {
public static void main(String[] args) {
int[] a = {1, 2, 3};
int[] b = {1, 2, 3};
System.out.println(Arrays.equals(a, b));
}
}الترتيب مهم
ترتيب العناصر مهم. فمصفوفتان تحتويان على القيم نفسها بترتيب مختلف غير متساويتين.
import java.util.Arrays;
public class Main {
public static void main(String[] args) {
int[] a = {1, 2, 3};
int[] b = {3, 2, 1};
System.out.println(Arrays.equals(a, b));
}
}مقارنة مصفوفات الكائنات
بالنسبة إلى مصفوفات الكائنات، تقارن Arrays.equals العناصر باستخدام دالة equals الخاصة بكل عنصر.
import java.util.Arrays;
public class Main {
public static void main(String[] args) {
String[] a = {"x", "y", "z"};
String[] b = {"x", "y", "z"};
System.out.println(Arrays.equals(a, b));
}
}toString لإخراج مقروء
تُظهر طباعة المصفوفة مباشرةً شيئًا مثل [I@1b6d3586، أي اسم الفئة وقيمة hash. وتنتج Arrays.toString صيغة مقروءة مثل [1, 2, 3].
import java.util.Arrays;
public class Main {
public static void main(String[] args) {
int[] nums = {1, 2, 3};
System.out.println(nums);
System.out.println(Arrays.toString(nums));
}
}المصفوفات المتداخلة: deepEquals
بالنسبة إلى مصفوفات المصفوفات، تتحقق equals العادية من المراجع الخارجية لكل صف فقط. استخدم Arrays.deepEquals لمقارنة المحتويات المتداخلة.
import java.util.Arrays;
public class Main {
public static void main(String[] args) {
int[][] a = {{1, 2}, {3, 4}};
int[][] b = {{1, 2}, {3, 4}};
System.out.println(Arrays.equals(a, b));
System.out.println(Arrays.deepEquals(a, b));
}
}المصفوفات المتداخلة: deepToString
وبالمثل، تطبع Arrays.deepToString المصفوفات المتداخلة بوضوح، بينما تعرض toString العادية مراجع العناصر الداخلية.
import java.util.Arrays;
public class Main {
public static void main(String[] args) {
int[][] grid = {{1, 2}, {3, 4}};
System.out.println(Arrays.toString(grid));
System.out.println(Arrays.deepToString(grid));
}
}hashCode للمصفوفات
إذا احتجت إلى قيمة hash تعتمد على المحتوى، فاستخدم Arrays.hashCode، وArrays.deepHashCode للمصفوفات المتداخلة. وتتوافق هذه الدوال مع Arrays.equals.
import java.util.Arrays;
public class Main {
public static void main(String[] args) {
int[] a = {1, 2, 3};
int[] b = {1, 2, 3};
System.out.println(Arrays.hashCode(a) == Arrays.hashCode(b));
}
}المقارنة بعد الفرز
للتحقق مما إذا كانت مصفوفتان تحتويان على مجموعة القيم نفسها بغض النظر عن الترتيب، افرز نسختين منهما ثم قارنهما باستخدام Arrays.equals.
import java.util.Arrays;
public class Main {
public static void main(String[] args) {
int[] a = {3, 1, 2};
int[] b = {2, 3, 1};
int[] ca = Arrays.copyOf(a, a.length);
int[] cb = Arrays.copyOf(b, b.length);
Arrays.sort(ca);
Arrays.sort(cb);
System.out.println(Arrays.equals(ca, cb));
}
}تسهيل التسجيل
أثناء تصحيح الأخطاء، ضع المصفوفات داخل Arrays.toString في عبارات الطباعة حتى تتمكن من قراءة القيم فعليًا بدلًا من المراجع الغامضة.
اختبار سريع
اختبر مدى فهمك لمقارنة المصفوفات.
مراجعة
لقد تعلّمت كيفية مقارنة المصفوفات وطباعتها.
- يقارن
==المراجع؛ استخدمArrays.equalsلمقارنة تساوي المحتوى. - الترتيب والطول مهمان معًا.
- يوفر
Arrays.toStringإخراجًا مقروءًا، بينما يتعاملdeepToStringمع التداخل. - تقارن
deepEqualsالمصفوفات المتداخلة.
الأسئلة الشائعة
هل درس «الدالتان Arrays.equals وtoString» مجاني؟
نعم — نص درس «الدالتان Arrays.equals وtoString» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Java Academy، انتقل إلى CoddyKit PRO. تتضمن دورة Java Academy 4 دروس في المجموع.
ماذا ستتعلم في «الدالتان Arrays.equals وtoString»؟
مقارنة المصفوفات وطباعتها تتمرن على Java Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ Java Academy؟
لا تُشترط خبرة سابقة. Java Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 4 من أصل 4.
كم من الوقت يستغرق درس «الدالتان Arrays.equals وtoString»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس Java Academy هذا؟
نعم. كل درس في Java Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- Arrays.sort والفرز
- Arrays.binarySearch
- Arrays.fill وcopyOf
- الدالتان Arrays.equals وtoString