מהו ממשק השוואה ב-Java עם דוגמאות?

Mhw Mmsq Hsww H B Java M Dwgm Wt



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

מהו ממשק השוואה ב-Java עם דוגמאות?

ממשק Comparator מכיל שיטות compare() ו-equals(). השיטה הראשונה משמשת לחישוב שני אובייקטים על ידי החזרת ערך מספר שלם. השיטה האחרת משמשת לחישוב שני אובייקטים המשווים לשוויון.

להלן דוגמאות שונות לשימוש בממשק Comparator ב-Java:







דוגמה 1: מיין רשימה על סמך האורך

בדוגמה זו, רשימת מחרוזות נחשבת וממיינת אותן לפי אורכן במקום לפי סדר אלפביתי:



יְבוּא java.util.ArrayList ;

יְבוּא java.util.Collections ;

יְבוּא java.util.Comparator ;

יְבוּא java.util.List ;

פּוּמְבֵּי מעמד רָאשִׁי {

פּוּמְבֵּי סטָטִי בָּטֵל רָאשִׁי ( חוּט [ ] args ) {

רשימה < חוּט > רשימה = חָדָשׁ רשימת מערך <> ( ) ;

רשימה. לְהוֹסִיף ( 'ג'ון' ) ;

רשימה. לְהוֹסִיף ( 'בוב' ) ;

רשימה. לְהוֹסִיף ( 'אליס' ) ;

אוספים . סוג ( רשימה ) ;

מערכת . הַחוּצָה . println ( רשימה ) ;

אוספים . סוג ( רשימה, חָדָשׁ StringLengthComparator ( ) ) ;

מערכת . הַחוּצָה . println ( רשימה ) ;

}

} // מוגדרת מחלקה

מעמד StringLengthComparator מיישם משווה < חוּט > {

פּוּמְבֵּי int לְהַשְׁווֹת ( חוּט s1, חוּט s2 ) {

לַחֲזוֹר מספר שלם . לְהַשְׁווֹת ( s1. אורך ( ) , s2. אורך ( ) ) ;

}

}

התיאור של הקוד לעיל ניתן להלן:



  • ראשית, צור מחלקה Comparator מותאמת אישית בשם StringLengthComparator המיישמת את ממשק Comparator.
  • הוא עוקף את שיטת compare() להשוואת האורך של שתי מחרוזות.
  • בסופו של דבר, העבירו מופע לשיטת.sort() למיון הרשימה באמצעות המשווה המותאם אישית שלנו.

תְפוּקָה





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



דוגמה 2: מיון אובייקטים על סמך שדה ספציפי

דוגמה נוספת נערכת כדי למיין אובייקטים על סמך שדה ספציפי. ממשק Comparator משמש כדי להשיג זאת:

יְבוּא java.util.ArrayList ;

יְבוּא java.util.Collections ;

יְבוּא java.util.Comparator ;

יְבוּא java.util.List ;

פּוּמְבֵּי מעמד רָאשִׁי {

פּוּמְבֵּי סטָטִי בָּטֵל רָאשִׁי ( חוּט [ ] args ) {

רשימה < אדם > אנשים = חָדָשׁ רשימת מערך <> ( ) ; // להקצות שם, גיל ומשכורות

אנשים. לְהוֹסִיף ( חָדָשׁ אדם ( 'אליס' , 25 , 50000 ) ) ;

אנשים. לְהוֹסִיף ( חָדָשׁ אדם ( 'בוב' , 30 , 75,000 ) ) ;

אנשים. לְהוֹסִיף ( חָדָשׁ אדם ( 'צ'רלי' , עשרים , 40000 ) ) ;

משווה < אדם > משווה שכר = חָדָשׁ משווה < אדם > ( ) {

// מיון אנשים לפי שכר

פּוּמְבֵּי int לְהַשְׁווֹת ( אדם p1, אדם p2 ) {

לַחֲזוֹר מספר שלם . לְהַשְׁווֹת ( p2. לקבל משכורת ( ) , p1. לקבל משכורת ( ) ) ;

}

} ;

אוספים . סוג ( אנשים, משווה שכר ) ; לַחֲזוֹר ערכי מיון

// הדפס רשימה ממוינת של אנשים

ל ( אדם אדם : אנשים ) {

מערכת . הַחוּצָה . println ( אדם ) ;

}

}

}

מעמד אדם { // הגדר שם, גיל ומשכורת

פְּרָטִי חוּט שֵׁם ; // היקף בתוך מחלקה
פְּרָטִי int גיל ;
פְּרָטִי int שכר ;

פּוּמְבֵּי אדם ( חוּט שֵׁם, int גיל, int שכר ) {
זֶה . שֵׁם = שֵׁם ;
זֶה . גיל = גיל ;
זֶה . שכר = שכר ;
}
פּוּמְבֵּי חוּט getName ( ) {
לַחֲזוֹר שֵׁם ;
}
פּוּמְבֵּי int getAge ( ) {
לַחֲזוֹר גיל ;
}
פּוּמְבֵּי int לקבל משכורת ( ) {
לַחֲזוֹר שכר ;
}
פּוּמְבֵּי חוּט toString ( ) {
לַחֲזוֹר שֵׁם + ' (גיל ' + גיל + ', משכורת $' + שכר + ')' ;
}
}

תיאור הקוד ניתן להלן:

  • כיתה בשם ' אדם ' עם שלושה שדות: ' שֵׁם ', ' גיל ', ו' שכר ' נחשב.
  • לאחר מכן, מיין אוסף של אובייקטים של Person בהתאם לשכר שלהם בסדר יורד.

תְפוּקָה

מהפלט עולה כי המשכורות מוינו לפי סדר יורד.

סיכום

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