בדוק אם שתי רשימות שוות ב- Java

1. הקדמה

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

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

תסתכל על קטע מתוך רשימה # שווה תיעוד Java:

... שתי רשימות מוגדרות כשוות אם הן מכילות את אותם האלמנטים באותו סדר.

הגדרה זו מבטיחה כי השיטה שווה פועלת כראוי על פני יישומים שונים של ממשק List.

אנו יכולים להשתמש בידע זה בעת כתיבת קביעות.

בקטעי הקוד הבאים נשתמש ברשימות הבאות כקלטים לדוגמא:

רשימת רשימה 1 = Arrays.asList ("1", "2", "3", "4"); List list2 = Arrays.asList ("1", "2", "3", "4"); List list3 = Arrays.asList ("1", "2", "4", "3");

2. JUnit

במבחן JUnit טהור, הטענות הבאות יהיו נכונות:

@Test ציבורי בטל כאשר TestForEquality_ShouldBeEqual () זורק חריג {Assert.assertEquals (list1, list2); Assert.assertNotSame (רשימה 1, רשימה 2); Assert.assertNotEquals (רשימה 1, רשימה 3); }

3. TestNG

כשמשתמשים בקביעות של TestNG הן ייראו באופן דומה מאוד לטענות של JUnit, אך חשוב לשים לב כי לִטעוֹן הכיתה מגיעה מחבילה אחרת:

@Test ציבורי בטל כאשר TestForEquality_ShouldBeEqual () זורק חריג {Assert.assertEquals (list1, list2); Assert.assertNotSame (רשימה 1, רשימה 2); Assert.assertNotEquals (רשימה 1, רשימה 3); }

4. AssertJ

אם אתה רוצה להשתמש ב- AssertJ, קביעות זה ייראו כך:

@Test הציבור בטל כאשר TestForEquality_ShouldBeEqual () זורק חריג {assertThat (list1) .isEqualTo (list2) .isNotEqualTo (list3); assertThat (list1.equals (list2)). isTrue (); assertThat (list1.equals (list3)). isFalse (); }

5. מסקנה

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

ניתן למצוא את כל דוגמאות הקוד ב- GitHub.