RegexTrie
public
class
RegexTrie
extends Object
| java.lang.Object | |
| ↳ | com.android.tradefed.util.RegexTrie<V> |
RegexTrie הוא עץ חיפוש שבו כל מקטע Pattern. לכן, המפתח List<Pattern> ולא List<String> כמו במבנה נתונים מסוג trie רגיל. שימו לב שהשיטה retrieve(String...) תתאים לנקודות ב-Patterns, ולא תיבדק לשוויון בין נקודות כמו ב-trie רגיל. לכן, יכול להיות שהביצועים שלה יהיו נמוכים במערכי נתונים גדולים.
אפשר גם להשתמש בערך null ברצף Pattern כתו כללי. אם המערכת נתקלת ב-null, היא מתעלמת מכל הערכים הבאים ברצף.
כשהקוד לאחזור נתקל ב-null Pattern, הוא קודם ימתין כדי לראות אם רשומה ספציפית יותר תואמת לרצף. אם יש רשומה כזו, היא תמשיך להתבצע,
גם אם בהמשך לא תהיה התאמה.
אם אין התאמה לרשומה ספציפית יותר, ההתאמה לתו כל כללי תוסיף את כל שאר התווים String לרשימת החילוצים (אם האפשרות הזו מופעלת) ותחזיר את הערך שמשויך לתו הכללי.
דוגמה קצרה לפונקציונליות של התווים הכלליים לחיפוש:
List<List<String>> captures = new LinkedList<List<String>>(); RegexTrie<Integer> trie = new RegexTrie<Integer>(); trie.put(2, "a", null); trie.put(4, "a", "b"); trie.retrieve(captures, "a", "c", "e"); // returns 2. captures is now [[], ["c"], ["e"]] trie.retrieve(captures, "a", "b"); // returns 4. captures is now [[], []] trie.retrieve(captures, "a", "b", "c"); // returns null. captures is now [[], []]
סיכום
constructors ציבוריים | |
|---|---|
RegexTrie()
|
|
methods ציבוריים | |
|---|---|
void
|
clear()
|
V
|
put(V value, String... regexen)
שיטת העזר הזו מקבלת רשימה של ביטויים רגולריים כ- |
V
|
put(V value, Pattern... patterns)
מוסיפים רשומה ל-trie. |
V
|
retrieve(String... strings)
שליפת ערך מהעץ, על ידי התאמת הרצף שסופק של |
V
|
retrieve(List<List<String>> captures, String... strings)
שליפת ערך מהעץ, על ידי התאמת הרצף שסופק של |
String
|
toString()
|
constructors ציבוריים
RegexTrie
public RegexTrie ()
methods ציבוריים
מחיקה
public void clear ()
put
public V put (V value,
String... regexen)שיטת העזר הזו מקבלת רשימה של ביטויים רגולריים כ-Strings ומקמפלת אותם תוך כדי הפעולה לפני הוספת Patterns הבאים לעץ ה-trie.
| פרמטרים | |
|---|---|
value |
V: הערך שרוצים להגדיר |
regexen |
String: רצף של ביטויים רגולריים (כערכי String) שצריך להתאים להם ברצף כדי לאחזר את ערך value המשויך. כל מחרוזת תעבור קומפילציה כ-Pattern לפני הפעלת put(Object,Pattern...). |
| החזרות | |
|---|---|
V |
|
put
public V put (V value,
Pattern... patterns)מוסיפים רשומה ל-trie.
| פרמטרים | |
|---|---|
value |
V: הערך שרוצים להגדיר |
patterns |
Pattern: הרצף של Pattern שצריך להתאים ברצף כדי לאחזר את value המשויך |
| החזרות | |
|---|---|
V |
|
אחזור
public V retrieve (String... strings)
שליפת ערך מהעץ, על ידי התאמת הרצף שסופק של String לרצף של Pattern שמאוחסן בעץ.
| פרמטרים | |
|---|---|
strings |
String: רצף של String להתאמה |
| החזרות | |
|---|---|
V |
הערך המשויך, או null אם לא נמצא ערך |
אחזור
public V retrieve (List<List<String>> captures,
String... strings)שליפת ערך מהעץ, על ידי התאמת הרצף שסופק של String לרצף של Pattern שמאוחסן בעץ. הגרסה הזו של השיטה מחזירה גם List של קבוצות לכידה לכל Pattern שהייתה התאמה שלו.
כל רשומה ברשימה החיצונית תואמת לרמה אחת של Pattern בעץ החיפוש.
הרשימה של קבוצות הלכידה תישמר לכל רמה. אם לא היו צילומים ברמה מסוימת, תישמר רשימה ריקה.
שימו לב: הפונקציה captures תופעל לפני תחילת השליפה.List.clear()
בנוסף, אם השליפה נכשלת אחרי רצף חלקי של התאמות, captures עדיין ישקף את הקבוצות לחילוץ מההתאמה החלקית.
| פרמטרים | |
|---|---|
captures |
List: מחרוזת List<List<String>> שדרכה יוחזרו קבוצות הלכידה. |
strings |
String: רצף של String להתאמה |
| החזרות | |
|---|---|
V |
הערך המשויך, או null אם לא נמצא ערך |
toString
public String toString ()
| החזרות | |
|---|---|
String |
|