חיפוש מחרוזת ברשימת ArrayLists

1. סקירה כללית

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

2. לולאה בסיסית

ראשית, נשתמש בלולאה בסיסית לחיפוש רצף התווים במחרוזת החיפוש הנתונה באמצעות ה- מכיל שיטת Java חוּט מעמד:

רשימת ציבורים findUsingLoop (חיפוש מחרוזות, רשימת רשימות) {List matches = new ArrayList (); עבור (String str: list) {if (str.contains (search)) {matches.add (str); }} התאמות חוזרות; } 

3. זרמים

ממשק ה- API של Java 8 Streams מספק לנו פתרון קומפקטי יותר באמצעות פעולות פונקציונליות.

ראשית, נשתמש ב- לְסַנֵן() שיטה לחיפוש מחרוזת החיפוש ברשימת הקלט שלנו, ואז נשתמש ב- לאסוף שיטה ליצור ולאכלס רשימה המכילה את האלמנטים התואמים:

רשימת ציבורי findUsingStream (חיפוש מחרוזות, רשימת רשימות) {List matchingElements = list.stream () .filter (str -> str.trim (). מכיל (חיפוש)) .collect (Collectors.toList ()); התאמת החזרת אלמנטים; }

4. ספריות צד שלישי

אם איננו יכולים להשתמש ב- Java 8 Stream API, אנו יכולים להסתכל בספריות צד שלישי כגון Commons Collections ו- Google Guava.

כדי להשתמש בהם, עלינו להוסיף לקובץ pom.xml רק גויאבה, אוספי Commons או שניהם תלות:

 com.google.guava guava 23.0 org.apache.commons commons-collection4 4.1 

4.1. אוספי Commons

אוספי Commons מספקים לנו שיטה IterableUtils.filteredIterable () שתואם את הנתון ניתן לנידון נגד א לְבַסֵס.

בוא נתקשר IterableUtils.filteredIterable (), הגדרת הפרדיקט לבחור רק את האלמנטים המכילים את מחרוזת החיפוש. ואז נשתמש IteratorUtils.toList () להמיר את ניתן לנידון אל א רשימה:

רשימת public findUsingCommonsCollection (חיפוש מחרוזות, רשימת רשימה) {Iterable result = IterableUtils.filteredIterable (list, Predicate new () {public בוליאני הערכה (String listElement) {return listElement.contains (search);}}); החזר את IteratorUtils.toList (result.iterator ()); } 

4.2. גויאבה של גוגל

גוגל גויאבה מציעה פיתרון דומה לזה של אפאצ'י filteredIterable () עם ה Iterables.filter () שיטה. בואו נשתמש בו כדי לסנן את הרשימה ולהחזיר רק את האלמנטים התואמים למחרוזת החיפוש שלנו:

רשימת ציבורים findUsingGuava (חיפוש מחרוזות, רשימת רשימות) {Iterable result = Iterables.filter (list, Predicates.containsPattern (search)); החזיר את Lists.newArrayList (result.iterator ()); }

5. מסקנה

במדריך זה למדנו דרכים שונות לחיפוש חוּט ב רשימת מערך. התחלנו לראשונה בפשטות ל לולאה ואז המשך בגישה באמצעות ממשק ה- API. לבסוף ראינו כמה דוגמאות המשתמשות בשתי ספריות צד שלישי - Google Guava and Commons Collections.

הדוגמאות המלאות זמינות באתר GitHub.


$config[zx-auto] not found$config[zx-overlay] not found