مقارنة مقابل المقارنة في Java

الفرق الرئيسي بين المقارنة والمقارنة في Java

  • قابلة للمقارنة في Java هو كائن لمقارنة نفسه بكائن آخر، في حين أن المقارنة هي كائن لمقارنة كائنات مختلفة من فئات مختلفة.
  • يوفر المقارنة compareTo() طريقة فرز العناصر Java، في حين يوفر Comparator compare() طريقة فرز العناصر Java.
  • توجد واجهة قابلة للمقارنة في java.lang الحزمة، في حين أن واجهة المقارنة موجودة في java.util الحزمة.
  • يوفر Comparable تسلسل فرز واحد، بينما يوفر Comparator تسلسلات فرز متعددة.
  • يؤثر Comparable على الفئة الأصلية، بينما لا يؤثر Comparator على الفئة الأصلية.

الفرق بين المقارنة والمقارنة
الفرق بين المقارنة والمقارنة

لقد قمت هنا بتحليل الفرق بين المقارنة والمقارن وسوف أقوم بتقييم إيجابيات وسلبيات كل منهما بشكل شامل.

ما هو مماثل في Java?

مشابه in Java هو كائن يقارن نفسه بكائن آخر. يساعد في فرز قائمة الكائنات المخصصة. Java.lang.يجب تنفيذ الواجهة القابلة للمقارنة بواسطة الفصل من أجل مقارنة مثيلاتها. يتم فرز مجموعة من الكائنات التي تنفذ واجهة قابلة للمقارنة تلقائيًا حسب Arrays.sort و Collections.sort الأساليب.

الطريقة المستخدمة في المقارنة

أود تسليط الضوء على طريقة مهمة أستخدمها بشكل متكرر في الواجهة القابلة للمقارنة:

قارن ب():

تُستخدم طريقة CompareTo() لإجراء فرز طبيعي على سلسلة. ويعني الفرز الطبيعي ترتيب الفرز الذي ينطبق على الكائن، على سبيل المثال، الترتيب العددي لفرز الأعداد الصحيحة، والترتيب الأبجدي للسلسلة، وما إلى ذلك.

بناء جملة CompareTo() الطريقة على النحو التالي:

int compareTo(T obj)

في بناء الجملة أعلاه، يشير T إلى نوع الكائنات التي ستقوم بمقارنتها.

CompareTo() الطريقة تقارن الكائن مع الكائن T.

الإخراج:

  • ترجع 0 إذا كانت القيم متساوية.
  • إذا كان للكائن قيمة أقل، فستُرجع هذه الطريقة قيمة سالبة.
  • إذا كان للكائن قيمة أعلى، فإنه يُرجع قيمة موجبة.

مثال على المقارنة في Java

البرنامج التالي لـ Java مثال مشابه يوضح المقارنة بين حرفين، "أ" و"ب". يأتي الحرف "a" قبل الحرف "b" أبجديًا.

وبالتالي فإن الناتج هو -1. يأتي الحرف "b" بعد الحرف "a" أبجديًا. ومن ثم، فإن الناتج هو 1. الحرفان "a" و"b" متساويان. وبالتالي فإن الناتج هو 0.

public class Sample_String {
    public static void main(String[] args) {
        String str_Sample = "a";
        System.out.println("Compare To 'a' b is : " + str_Sample.compareTo("b"));
        str_Sample = "b";
        System.out.println("Compare To 'b' a is : " + str_Sample.compareTo("a"));
        str_Sample = "b";
        System.out.println("Compare To 'b' b is : " + str_Sample.compareTo("b"));
    }
}

الناتج

Compare To 'a' b is : -1
Compare To 'b' a is : 1
Compare To 'b' b is : 0

ما هو المقارنة في Java?

المقارنة in Java هو كائن لمقارنة كائنات مختلفة من فئات مختلفة. واجهة المقارنة في Java يستخدم أيضًا لترتيب كائنات الفئات المعرفة من قبل المستخدم. يتضمن طريقتين مهمتين لواجهة المقارنة تعرفان باسم المقارنة (Object obj1، Object obj2) والمساواة (Object element).

الطريقة المستخدمة في المقارنة

في ممارستي، أعتمد بشكل متكرر على الأساليب الحاسمة التالية لواجهة المقارنة:

يقارن():

Compare() تمكنك من ترتيب الأشياء. للقيام بذلك، عليك إنشاء فئة تطبق واجهة المقارنة. بعد ذلك، تحتاج إلى تجاوز طريقة المقارنة الخاصة به.

بناء جملة compare() الطريقة على النحو التالي:

compare(Object obj1, Object obj2)

في بناء الجملة أعلاه، obj1 وobj2 هما كائنان يجب عليك مقارنتهما باستخدام طريقة المقارنة (). compare() الأسلوب.

الإخراج:

  • تقوم بإرجاع عدد صحيح سالب إذا كانت الوسيطة الأولى أقل من الوسيطة الثانية.
  • يتم إرجاع صفر إذا كانت الوسيطة الأولى والوسيطة الثانية متساويتين.
  • يمكن لهذه الطريقة إرجاع عدد صحيح موجب في حالة كون الوسيطة الأولى أكبر من الثانية.

عليك التأكد من أن العلاقة متعدية. على سبيل المثال، ((compare(a, b)>0) && (compare(b, c)>0)) والذي يتضمن مقارنة(a, c)>0.

مثال على المقارنة في Java

في الأسفل Java مثال المقارنة، هناك 6 المتغيرات. "x" و"y" و"p" و"q" و"r" و"s". الإخراج هو -1 لأن قيمة "x"، 20 أقل من قيمة "y"، 30. الإخراج هو 0 لأن قيمة "p"، 40 تساوي قيمة "q"، 40 .

import java.lang.Integer; 
public class example { 
    public static void main(String args[]) 
    { 
        int x = 20; 
        int y = 30; 
        // as 10 less than 20, 
        // Output will be a value less than zero 
        System.out.println(Integer.compare(x, y)); 
        int p = 40; 
        int q = 40; 
        // as 30 equals 30, 
        // Output will be zero 
        System.out.println(Integer.compare(p, q)); 
        int r = 20; 
        int s = 7; 
        // as 15 is greater than 8, 
        // Output will be a value greater than zero 
        System.out.println(Integer.compare(r, s)); 
    } 
}

الإخراج:

-1
0
1

يساوي ():

Equals() يتحقق مما إذا كان الكائن الرقمي يساوي الكائن الذي تم تمريره كوسيطة أم لا.

بناء جملة equals() الطريقة على النحو التالي:

public boolean equals(Object o)

تأخذ هذه الطريقة معلمتين: 1) أي كائن، و2) قيمة الإرجاع. يتم إرجاعه صحيحًا إذا لم تكن الوسيطة التي تم تمريرها فارغة وكانت عبارة عن كائن من نوع مشابه له نفس القيمة الرقمية.

يساوي طريقة المثال:

في المثال أدناه، سأقوم بمقارنة المتغيرات الأربعة مع بعضها البعض. ثلاثة متغيرات من النوع عدد صحيح، ومتغير واحد من النوع القصير. النتيجة الأولى خاطئة لأن قيمة p، وهي 5، لا تساوي قيمة q، وهي 20.

النتيجة الثانية صحيحة لأن قيمة المتغيرين p وr هي نفسها، وهي 5. وأخيرًا، يكون الناتج خاطئًا، حيث أن المتغيرين p وs لهما قيم مخصصة مختلفة.

public class Test { 
   public static void main(String args[]) {
      Integer p = 5;
      Integer q = 20;
      Integer r =5;
      Short s = 5;
      System.out.println(p.equals(q));  
      System.out.println(p.equals(r)); 
      System.out.println(p.equals(s));
   }
}

الناتج

false
true
false

الاختلافات بين المقارنة والمقارنة في Java

كثيرا ما أرى الخلط بين Java المقارنة والمقارنة. وهنا الفرق الرئيسي:

الفرق بين المقارن والمقارن في Java
الفرق بين المقارن والمقارن في Java

أساس المقارنة مشابه المقارنة
الأسلوب يوفر مماثلة compareTo() طريقة فرز العناصر Java. يوفر المقارنة compare() طريقة فرز العناصر Java.
فئة الإشتراك توجد واجهة قابلة للمقارنة في java.lang الحزمة. توجد واجهة المقارنة في java.util الحزمة.
منطق الفرز يجب أن يكون منطق الفرز في نفس فئة الكائن الذي ستقوم بفرزه. يجب أن يكون منطق الفرز في فئات منفصلة لكتابة أنواع مختلفة بناءً على سمات مختلفة للكائنات.
كائن الطبقة يجب أن تقوم الفئة التي تريد فرز كائناتها بتنفيذ الواجهة القابلة للمقارنة. لا تحتاج الفئة التي تريد فرز كائناتها إلى تنفيذ واجهة المقارنة.
فرز التسلسلات ويوفر تسلسلات فرز واحدة. يوفر تسلسلات فرز متعددة.
ترتيب الفرز يمكن لهذه الطريقة فرز البيانات وفقًا لترتيب الفرز الطبيعي. تقوم هذه الطريقة بفرز البيانات وفقًا لترتيب الفرز المخصص.
الفئه أنه يؤثر على الطبقة الأصلية. أي يتم تغيير الطبقة الفعلية. لا يؤثر على الفصل الأصلي، أي لا يتم تغيير الفصل الفعلي.
الأستعمال يتم تنفيذه بشكل متكرر في واجهة برمجة التطبيقات (API) حسب التقويم وفئات الغلاف والتاريخ و
خيط.
يتم تطبيقه لفرز مثيلات فئات الطرف الثالث.
تطبيق تطبق كافة فئات المجمع وفئات السلسلة واجهات قابلة للمقارنة. الفئات الوحيدة المنفذة من Comparator هي Collator وRuleBasedColator.

أفضل الممارسات أثناء استخدام Comparator و Comparable في Java

  • استخدم واجهة قابلة للمقارنة عندما تكون المقارنة قياسية لفئة معينة.
  • يمكنك استخدام لامدا مع المقارنة.
  • العديد من الفئات الأساسية المتاحة تنفذ واجهة قابلة للمقارنة.
  • من الممكن استخدام TreeSet وTreeMap أثناء فرز المجموعة أو الخريطة.
  • استخدم compareTo() تعمل الطريقة مع المقارنة وكذلك قابلة للمقارنة.
  • استخدم واجهة المقارنة فقط عندما تحتاج إلى مزيد من المرونة.
  • استخدم compareTo() ستُرجع الطريقة عددًا صحيحًا موجبًا إذا كان الكائن الأول أكبر من الآخر، وسالبًا إذا كان أقل، وصفرًا إذا كان كلاهما متماثلين.

كيفية الاختيار بين المقارنة والمقارنة

بشكل قاطع، تجربتي العملية تشير إلى أن الاستفادة من المقارنة والمقارنة في Java يزيد بشكل كبير من قدرتنا على التحكم في فرز البيانات، مما يعزز الأداء والوظائف.

تلخيص هذه التدوينة بـ: