JavaRush /בלוג Java /Random-HE /הפסקת קפה מס' 185. מדריך מקיף למסגרת אוסף Java

הפסקת קפה מס' 185. מדריך מקיף למסגרת אוסף Java

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

ממשקים

ממשקים ב-Java Collection Framework מגדירים את ההתנהגות והפעולות הכלליות שניתן לבצע על אוספים. זה כולל הוספה או הסרה של פריטים, חזרה על פריטים באוסף ועוד.
  • אוסף : ממשק השורש בהיררכיית אוסף, המייצג קבוצת אובייקטים המכונה אלמנטים.
  • רשימה : אוסף אלמנטים מסודר המאפשר שכפול.
  • סט : אוסף של אלמנטים שאינם מאפשרים שכפול.
  • מפה : אוסף של זוגות מפתח-ערך, כאשר כל מפתח הוא ייחודי.
  • תור : תור הוא מבנה נתונים המשמש לאחסון אלמנטים ב-First-In-First-Out (FIFO).
רשימה זו אינה כוללת הכל, אלא רק את הממשקים הנפוצים ביותר במסגרת Java Collection Framework. עכשיו בואו נסתכל מקרוב על כל אחד מהם.

אוסף

אוסף הוא קבוצה של אובייקטים המכונה אלמנטים שלה. זהו אובייקט שיכול להכיל הפניות לאובייקטים אחרים. ממשק האוסף הוא השורש של היררכיית האוסף. זהו הממשק הבסיסי לכל האוספים במסגרת Java Collection Framework. הוא מגדיר את השיטות הבסיסיות שיש ליישם בכל האוספים, כגון add() , remove() ו- contains() . הנה דוגמה לשימוש באוספים במסגרת Java Collection Framework. כאן משתמשים בממשק האוסף כדי להוסיף ולהסיר אלמנטים מאוסף:
import java.util.Collection;
import java.util.ArrayList;

public class CollectionExample {
    public static void main(String[] args) {
        // Создаем новую коллекцию
        Collection<String> stringCollection = new ArrayList<>();

        // Добавляем несколько элементов в коллекцию
        stringCollection.add("hello");
        stringCollection.add("world");
        stringCollection.add("foo");
        stringCollection.add("bar");

        // Печатаем число элементов в коллекции
        System.out.println("Number of elements: " + stringCollection.size());

        // Удаляем элемент из коллекции
        stringCollection.remove("foo");

        // Опять печатаем число элементов в коллекции
        System.out.println("Number of elements: " + stringCollection.size());
    }
}
הפלט הוא:
מספר אלמנטים: 4 מספר אלמנטים: 3
כפי שניתן לראות, ממשק האוסף הוא דרך פשוטה ונוחה לבצע פעולות נפוצות עם אוסף אובייקטים. הוא משמש לעתים קרובות כנקודת התחלה כאשר עובדים עם אוספים ב-Java. מסגרת האוסף של Java כוללת מספר ממשקים המגדירים התנהגות משותפת לסוגים שונים של אוספים. חלקם הם חלק מקבוצת הממשק java.util.Collection :
  • java.util.List
  • java.util.set
  • java.util.Queue

java.util.List

רשימה היא אוסף מסודר של אובייקטים, שכל אלמנט שלהם תופס מקום מסוים ברשימה. ממשק הרשימה מרחיב את ממשק האוסף ומוסיף מספר שיטות לעבודה עם רשימות, כגון שיטות גישה לאלמנטים לפי מיקומם ברשימה ושיטות חיפוש ומיון רשימות. רשימה יכולה להכיל רכיבים כפולים , ניתן לגשת לרכיבים הללו לפי מיקומם ברשימה. הנה דוגמה לשימוש בממשק הרשימה כדי להוסיף, להסיר ולגשת לפריטים ברשימה:
import java.util.List;
import java.util.ArrayList;

public class ListExample {
    public static void main(String[] args) {
        // Создаем новый список
        List<String> stringList = new ArrayList<>();

        // Добавляем несколько элементов в список
        stringList.add("India");
        stringList.add("UAE");
        stringList.add("London");
        stringList.add("US");

        // Печатаем первый элемент в списке
        System.out.println("First element: " + stringList.get(0));

        // Удаляем второй элемент из списка
        stringList.remove(1);

        // Печатаем второй элемент в списке
        System.out.println("Second element: " + stringList.get(1));
    }
}
סיכום:
אלמנט ראשון: הודו אלמנט שני: לונדון
כפי שמוצג לעיל, ממשק List מספק דרך נוחה לעבוד עם אוספים מסודרים של אלמנטים. הוא משמש בדרך כלל כאשר אתה צריך לשמור על סדר האלמנטים באוסף או כאשר אתה צריך לגשת לאלמנטים לפי האינדקס שלהם ברשימה.

java.util.Set

קבוצה במסגרת Java Collection היא קבוצה לא מסודרת של אלמנטים ייחודיים שאינה מאפשרת רכיבים כפולים . ממשק ה-Set מרחיב את ממשק ה-Collection ומוסיף מספר שיטות, כמו שיטות לבדיקה האם אלמנט נמצא בסט ושיטות להוספה והסרה של אלמנטים מסט. הנה דוגמה לשימוש בממשק הסט כדי להוסיף ולהסיר אלמנטים מקבוצה במסגרת Java Collection:
import java.util.Set;
import java.util.HashSet;

public class SetExample {
    public static void main(String[] args) {
        // Создаем новый set
        Set<String> stringSet = new HashSet<>();

        // Добавляем несколько элементов в set
        stringSet.add("Jan");
        stringSet.add("Feb");
        stringSet.add("March");
        stringSet.add("April");

        // Проверяем наличие в set element "March"
        if (stringSet.contains("March")) {
            System.out.println("The set contains the element 'March'");
        }

        // Удаляем элемент "April" из set
        stringSet.remove("April");

        // Опять проверяем наличие element "April" в set
        if (!stringSet.contains("April")) {
            System.out.println("The set no longer contains the element 'April'");
        }
    }
}
סיכום:
הסט מכיל את האלמנט 'מרץ' הסט כבר לא מכיל את האלמנט 'אפריל'

java.util.Queue

תור הוא מבנה נתונים המשמש לאחסון אלמנטים בסדר ראשון-ב-ראשון (FIFO). המשמעות היא שהרכיב הראשון שנוסף לתור יהיה האלמנט הראשון שהוסר. להלן דוגמה כיצד להשתמש בתור במסגרת Java Collection Framework:
// Creation очереди
Queue<String> queue = new LinkedList<>();

// Добавление элементов в очередь
queue.add("apple");
queue.add("banana");
queue.add("orange");
// Печатаем очередь
System.out.println("Queue: " + queue);
// Удаляем элемент из очереди
String element = queue.remove();
System.out.println("Removed element: " + element);
// Печатаем обновленную очередь
System.out.println("Queue: " + queue);
בדוגמה זו, יצרנו תור מחרוזת והוספנו לו שלושה אלמנטים: "תפוח", "בננה" ו"תפוז". לאחר מכן נדפיס את התור כדי לראות את מצבו הנוכחי. לאחר מכן, אנו מסירים את האלמנט מהתור ומדפיסים אותו לקונסולה. לבסוף, אנו מדפיסים את התור המעודכן כדי להבטיח שהאלמנט שהוסר כבר לא נמצא בתור.

מַפָּה

ממשק java.util.Map ב-Java Collection Framework משמש למיפוי מפתחות לערכים. זה מאפשר לך לאחסן אלמנטים כזוגות מפתח-ערך ומספק שיטות לגישה, שינוי ואיטרציה על אלמנטים במפה. להלן דוגמה לשימוש בממשק המפה :
// Создаем Map
 Map<String, Integer> map = new  HashMap <>();
// Добавляем элементы в Map
map.put("apple", 1);
map.put("banana", 2);
map.put("orange", 3);
// Печать Map
 System.out.println("Map: " + map);
// Получаем meaning для определенного ключа
int  value  = map.get( "banana" );
System.out.println("Value for 'banana': " + value);
// Удаляем элемент из Map
map.remove("orange");
// Печать обновленной карты
 System.out.println( "Map: " + map);
בדוגמה זו, אנו יוצרים מפה של מחרוזות ושלמים על ידי הוספת שלושה אלמנטים לה: "תפוח" מתאים ל-1, "בננה" מתאמות 2 ו"כתום" התאמות 3. לאחר מכן נדפיס את המפה כדי לראות את המשמעות הנוכחית שלה. לאחר מכן, אנו מקבלים את הערך של מפתח "בננה" ומדפיסים אותו לקונסולה. לבסוף, אנו מסירים את צמד המפתח-ערך עבור "כתום" מהמפה ומדפיסים את המפה המעודכנת כדי לראות שהאלמנט שהוסר כבר לא שם.

שיעורים

Class הוא יישום קונקרטי של ממשק אוסף. הוא מספק יישומים ספציפיים של התנהגויות ופעולות נפוצות המוגדרות על ידי ממשקים במסגרת.
  • ArrayList : יישום של ממשק List עם מערך שניתן לשנות את גודלו.
  • LinkedList : רשימה מקושרת כפולה, יישום של ממשקי List ו- Deque .
  • HashSet : מימוש של Set שמשתמש בטבלת Hash לאחסון.
  • TreeSet : מימוש של Set המשתמש בעץ לאחסון.
  • HashMap : מימוש של Map המשתמש בטבלת Hash לאחסון.
הרשימה לעיל היא אחת השיעורים הנפוצים ביותר במסגרת Java Collection Framework. עכשיו בואו נסתכל על ההסבר המפורט של השיעורים הללו.

רשימת מערך

המחלקה java.util.ArrayList באוספים של Java משמשת לאחסון מערך שניתן לשנות את גודלו של אלמנטים ברשימה. זהו יישום נרחב של ממשק java.util.List שמשתמש במערך לאחסון אלמנטים ומספק שיטות יעילות לגישה, שינוי ואיטרציה דרך אלמנטים ברשימה. המחלקה java.util.ArrayList מספקת גישה אקראית מהירה לאלמנטים שלה, אך הכנסה והסרה איטית במיקומים אקראיים. להלן דוגמה לשימוש במחלקת ArrayList במסגרת Java Collection:
// Создаем array list
List<String> list = new ArrayList<>();
// Добавляем элементы в array list
list.add("qa");
list.add("devops");
list.add("dev");
// Печатаем array list
System.out.println("Array list: " + list);
// Доступ к элементу по определенному индексу
String element = list.get(1);
System.out.println("Element at index 1: " + element);
// Удаление element из the array list
list.remove(1);
// Print the updated array list
System.out.println("Array list: " + list);
כפי שאתה יכול לראות, יצרנו מערך של מחרוזות והוספנו לו שלושה אלמנטים: "qa", "devops" ו-"dev". לאחר מכן הדפסנו את רשימת המערך כדי לראות את מצבו הנוכחי. לאחר מכן, אנו ניגשים לאלמנט באינדקס 1 ומדפיסים אותו לקונסולה. לבסוף, אנו מסירים את האלמנט באינדקס 1 מרשימת המערך ומדפיסים רשימת מערך מעודכנת כדי להבטיח שהאלמנט שהוסר אינו נמצא עוד ברשימה.

רשימה מקושרת

המחלקה java.util.LinkedList במסגרת Java Collection יורשת מהמחלקה AbstractList ומיישמת את ממשקי List ו- Deque . הוא מספק שיטות יעילות להוספה, הסרה וגישה לאלמנטים בתחילת ובסוף רשימה. מחלקה זו היא גם יישום של ממשק הרשימה , המשתמש ברשימה מקושרת כפול לאחסון אלמנטים. הוא מספק הכנסה ומחיקה מהירה במיקומים שרירותיים, אך גישה אקראית איטית למרכיביו. הנה דוגמה לשימוש במחלקה LinkedList במסגרת Java Collection:
// Создаем linked list
List<String> list = new LinkedList<>();
// Добавляем элементы в linked list
list.add("selenium");
list.add("cypress");
list.add("playwright");
// Печатаем linked list
System.out.println("Linked list: " + list);
// Добавляем элемент в начало списка
list.add(0, "webdriver.io");
// Печатаем обновленный linked list
System.out.println("Linked list: " + list);
// Удаляем первый элемент в списке
list.remove(0);
// Еще раз печатаем обновленный linked list
System.out.println("Linked list: " + list);
בדוגמה זו, יצרנו רשימה מקושרת של מיתרים והוספנו לה שלושה אלמנטים: "סלניום", "ברוש" ו"מחזאי". לאחר מכן אנו מדפיסים את הרשימה המקושרת כדי לראות את מצבה הנוכחי. לאחר מכן, נוסיף את האלמנט "webdriver.io" לתחילת הרשימה ונדפיס את הרשימה המקושרת המעודכנת. לבסוף, אנו מסירים את הרכיב הראשון מהרשימה ומדפיסים שוב את הרשימה המקושרת המעודכנת כדי לראות שהרכיב שנמחק כבר לא ברשימה.

HashSet

המחלקה java.util.HashSet ב-Java Collection Framework משמשת לאחסון אוסף של אלמנטים ייחודיים בסט. הוא מספק יישום מבוסס טבלת hash של ממשק java.util.Set . הוא גם מספק הכנסה, מחיקה וחיפוש מהירים, אך אינו שומר על סדר האלמנטים שלו. להלן דוגמה לשימוש במחלקה HashSet במסגרת Java Collection:
// Создаем hash set
Set<String> set = new HashSet<>();

// Добавляем элементы в hash set
set.add("rose");
set.add("lily");
set.add("lotus");
// Попытка добавить повторяющийся элемент
set.add("rose");
// Печатаем hash set
System.out.println("Hash set: " + set);
// Удаляем элемент из hash set
set.remove("lily");
// Печать обновленного hash set
System.out.println("Hash set: " + set);
כאן יצרנו ערכת גיבוב של מחרוזות והוספנו לה שלושה אלמנטים: "ורד", "שושן" ו"לוטוס". לאחר מכן ננסה להוסיף שוב את האלמנט "רוז", אך מכיוון שערכת הגיבוב אינה מאפשרת כפילויות, הוא לא יתווסף. לאחר מכן אנו מדפיסים את ערכת הגיבוב כדי לראות את מצבה הנוכחי. לאחר מכן אנו מסירים את האלמנט "לילי" מהסט ומדפיסים את ה-hash המעודכן של הסט כדי לראות שהאלמנט שהוסר כבר לא בסט.

TreeSet

המחלקה java.util.TreeSet ב-Java Collection Framework משמשת לאחסון אוסף של אלמנטים ייחודיים בערכה ממוינת בסדר עולה. הוא מספק יישום מבוסס עץ של ממשק java.util.Set לאחסון אלמנטים מבלי לאפשר רכיבים כפולים. המחלקה מספקת הכנסה, מחיקה וחיפוש מהירים, ושומרת על סדר הרכיבים שלה לפי הסדר הטבעי או ההשוואה שלהם. הנה דוגמה לשימוש במחלקה TreeSet במסגרת Java Collection:
// Создаем tree set
Set<String> set = new TreeSet<>();

// Добавляем элементы в tree set
set.add("apple");
set.add("banana");
set.add("orange");
// Попытка добавить повторяющийся элемент
set.add("apple");
// Печатаем tree set
System.out.println("Tree set: " + set);
// Удаляем элемент из tree set
set.remove("banana");
// Печатаем обновленный tree set
System.out.println("Tree set: " + set);
בדוגמה זו, אנו יוצרים סט עץ של מחרוזות ומוסיפים לה שלושה אלמנטים: "תפוח", "בננה" ו"תפוז". לאחר מכן אנו מנסים להוסיף שוב את האלמנט "תפוח", אך מכיוון שסט העץ אינו מאפשר כפילויות, הוא לא יתווסף. לאחר מכן אנו מדפיסים את ערכת העץ כדי לראות את מצבו הנוכחי. מכיוון שמערכת העצים ממוינת בסדר עולה, האלמנטים יודפסו לפי הסדר: "תפוח", "בננה" ו"תפוז". לאחר מכן אנו מסירים את האלמנט "בננה" מהסט ומדפיסים את ערכת העץ המעודכנת כדי לראות שהאלמנט שהוסר כבר לא בסט.

מפת גיבוב

המחלקה java.util.HashMap במסגרת Java Collection משמשת לאחסון מיפוי מפתחות לערכים במפה. הוא מספק יישום מבוסס טבלת hash של ממשק java.util.Map ומאפשר לאחסן אלמנטים כצמדי מפתח-ערך. המחלקה מספקת הכנסה, מחיקה וחיפוש מהירים, אך אינה שומרת על סדר הרכיבים שלה. הנה דוגמה לשימוש במחלקה HashMap במסגרת Java Collection:
// Создаем hash map
Map<String, Integer> map = new HashMap<>();

// Добавляем элементы в hash map
map.put("apple", 1);
map.put("banana", 2);
map.put("orange", 3);
// Печатаем hash map
System.out.println("Hash map: " + map);
// Получаем meaning для определенного ключа
int value = map.get("banana");
System.out.println("Value for 'banana': " + value);
// Удаляем элемент из hash map
map.remove("orange");
// Печатаем обновленный hash map
System.out.println("Hash map: " + map);
בדוגמה זו, אנו יוצרים מפת גיבוב של מחרוזות שלמים ומוסיפים לה שלושה אלמנטים: "תפוח" תואם את 1, "בננה" תואם 2, ו"כתום" התאמות 3. לאחר מכן נדפיס את מפת הגיבוב כדי לראות את המצב הנוכחי. לאחר מכן, אנו מקבלים את הערך של מפתח "בננה" ומדפיסים אותו לקונסולה. לבסוף, אנו מסירים את צמד המפתח-ערך עבור "כתום" ממפת הגיבוב ומדפיסים את מפת הגיבוב המעודכנת כדי לראות שהאלמנט שהוסר אינו נמצא בה עוד.

סיכום

מסגרת Java Collection היא קבוצה של מחלקות וממשקים המספקים דרך סטנדרטית לייצוג ולתפעל אוספים של אובייקטים בשפת התכנות Java. זה מאפשר למפתחים/בודקים לעבוד עם אוספי אובייקטים בצורה עקבית ויעילה. המסגרת מספקת להם שיטות לאחסון, גישה וניהול של פריטים באוסף, ומאפשרת להם לעבור בקלות בין יישומי אוסף שונים בהתאם לדרישות האפליקציה.
הערות
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION