ההבדל בין השוואה ומשווה ב- Java

מְחַבֵּר: Laura McKinney
תאריך הבריאה: 1 אַפּרִיל 2021
תאריך עדכון: 13 מאי 2024
Anonim
אסמבלי - שיעור 14 – פקודות השוואה וקפיצה מותנת | הנדסת תוכנה וסייבר לכיתות י,יא
וִידֵאוֹ: אסמבלי - שיעור 14 – פקודות השוואה וקפיצה מותנת | הנדסת תוכנה וסייבר לכיתות י,יא

תוֹכֶן

השוואה ו- Comparator שניהם הם הממשקים הגנריים ב- Java המשמשים להשוואה בין אלמנטים הנתונים של האובייקטים. הממשק להשוואה קיים בחבילת java.lang והממשק Comparator קיים בחבילת java.util. ההבדל הבסיסי בין ממשקי ההשוואה והמשווה הוא שממשק ההשוואה מספק את רצף המיון היחיד ואילו ממשק ה- Comparator מספק את רצפי המיון המרובים. ישנם כמה הבדלים אחרים בין ממשק השוואה לבין משווה אשר נלמד בתרשים השוואה.


  1. טבלת השוואה
  2. הגדרה
  3. הבדלים עיקריים
  4. סיכום

טבלת השוואה

בסיס להשוואההשוואהמשווה
בסיסי הממשק השווה מאפשר רק רצף מיון יחיד.ממשק ההשוואה מאפשר רצפי מיון מרובים.
חבילות הממשק ההשוואה קיים בחבילת java.lang.ממשק ההשוואה קיים בחבילת java.util.
שיטות הממשק ההשוואה מכיל שיטה יחידה בלבד
public int comparTo (אובייקט אובייקט);
ממשק ההשוואה מכיל שתי שיטות
השוואה בינונית ציבורית (Object obj1, Object obj2)
שווה בוליאני (אובייקט אוביי)
יישוםממשק השוואה מיושם על ידי המחלקה שיש להשוות בין האובייקטים שלהם.ממשק המשווה מיושם על ידי מחלקה מרחבית במקום למחלקה שיש להשוות בין האובייקטים שלהם.
השוואה שיטת השוואה (Object obj) משווה את האובייקט המשמש להפעלת השיטה עם האובייקט שצוין עובר לשיטה.שיטת השוואה (Object obj1, Object obj2) משווה בין שני האובייקטים שצוינו המועברים לשיטה.
רשימה / מערךכאשר יש להשוות רשימה של האובייקט מסוג השוואה, הכיתה אוסף מספקת שיטה, כלומר Collections.sort (רשימה lst).כאשר יש להשוות בין רשימת אובייקטים מסוג השוואה, הכיתה אוסף מספקת שיטה כלומר
Collections.sort (רשימה, משווה).


הגדרת השוואה

השוואה היא ממשק זמין בחבילת java.lang. כיתה מיישמת את ממשק ה- Comparator, כדי למיין את האובייקט שלו בסדר טבעי. האובייקטים ממוינים בסדר טבעי פירושם שמשווים את האובייקטים לפי ערכי ASCII שלהם. הכיתות המיישמות את הממשק ההשוואה הן כיתות בייט, תו, כפול, צף, ארוך, קצר, מחרוזת ומספר שלם. אפילו כיתת התאריך והקלנדר מיישמת גם את הממשק השווה.

הממשק ההשוואה מכיל רק שיטה אחת שהיא CompareTo (Object obj). שיטה זו משווה את האובייקט המשמש להפעלת השיטה עם האובייקט שצוין בפרמטר. התחביר של השיטה הוא כדלקמן:

public int comparTo (אובייקט אובייקט);

שיטת השוואה CompareTo (Object obj) 0כאשר שני האובייקטים לעומת השיטה מכילים אותו ערך, הוא חוזר -ve ערך אם האובייקט הקורא קטן מזה שהאובייקט שצוין וחוזר + ve ערך אם לאובייקט המזמין יש ערך גדול יותר בהשוואה לאובייקט שצוין. מחלקת האוספים מספקת שיטת מיון למיון רכיבי הרשימה. ניתן למיין את האלמנטים ברשימה (ומערך) מסוג השוואה באמצעות השיטה "Collections.sort (List lst)".


הגדרת המשווה

Comparator הוא ממשק זמין בחבילת java.util. Comparator הממשק אינו מיושם על המחלקה שיש להשוות בין האובייקטים שלהם, במקום זאת מחלקה נפרדת מיישמת את ממשק ה- Comparator כך שלוגיקת המיון מוחלת על כל אלמנט נתונים של האובייקט בכיתה אחרת. המשווה מכיל שתי שיטות כדלקמן:

public int השווה (אובייקט obj1, אובייקט obj2) ושוויון בוליאני (אובייקט obj)

שיטת השוואה () לעיל משווה את האובייקט הראשון obj1, עם האובייקט השני obj2. החזרת שיטת השוואה () 0 כאשר שני האובייקטים לעומת השיטה מכילים אותו ערך, הוא חוזר -ve ערך אם האובייקט obj1 קטן יותר אז האובייקט obj2 וחוזר + ve ערך אם לאובייקט obj1 יש ערך גדול יותר בהשוואה לאובייקט obj2. שיטות השוויון () בודקות אם האובייקט שצוין שווה לאובייקט המזמין. שיטת השווים שווה () נכון אם שני האובייקטים שהושוו שווים אחרת הוא מחזיר שקר. כיתת האוספים מספקת את השיטה למיון רכיבי הרשימה וסוג ההשוואה. רכיבי הרשימה של סוגי ההשוואה ממוינים לפי השיטה Collections.sort (רשימה, משווה).

  1. הממשק ההשוואה מאפשר רצף מיון בודד שמשמעותו ניתן להשוות רק אלמנט נתונים בודד של האובייקט בשיטת השוואה CompareTo () מצד שני ממשק Comparator מאפשר רצפי מיון מרובים שמשמעותם ניתן להשוות אלמנטים נתונים מרובים של האובייקט.
  2. הממשק ההשוואה מיושם על ידי המחלקה שיש להשוות בין האובייקטים שלהם מכיוון שלוגית המיון מוגדרת באותה מחלקה. מצד שני, ממשק ה- Comparator אינו מיושם על ידי המחלקה שיש להשוות בין האובייקטים שלהם מכיוון שלוגית המיון מוגדרת בכיתות הנפרדות בהן כל מחלקה מגדירה מיון על אלמנט נתונים בודד של האובייקט וכיתות המגדירות הללו מיישמות את ממשק ה- Comparator. .
  3. הממשק השווה נמצא בתוך חבילת java.lang ואילו ממשק ה- Comparator נמצא בתוך חבילת java.util.
  4. הממשק ההשוואה מצהיר רק שיטה אחת שהיא השוואה (Object obj) ואילו הממשק של Comparator מכריז על שתי שיטות שהם, השווה (Object obj1, Object obj2) ושווה (Object obj).
  5. שיטת השוואת השוואה (Object obj) בשוואה משווה בין שיטת קריאה לאובייקט עם האובייקט שצוין שהועבר לשיטה ואילו השוואה (Object obj1, Object obj2) של Comparator משווה את האובייקטים obj1 עם obj2 המועברים לשיטה.
  6. כיתת האוספים מספקת שיטת מיון "Collections.sort (רשימה lst)" כדי למיין את האובייקטים מסוג ההשוואה. כיתת האוספים מספקת שיטת מיון Collections.sort (רשימה, משווה) למיון אובייקטים מסוג Comparator.

סיכום:

אם ברצונך למיין את האובייקטים בהזמנה טבעית, אתה יכול להשתמש בממשק השווה אחר שאתה רוצה למיין את האובייקטים על סמך כל תכונה ואז משתמשים בממשק המשווה.