JavaRush /وبلاگ جاوا /Random-FA /قهوه استراحت شماره 185. راهنمای جامع چارچوب مجموعه جاوا

قهوه استراحت شماره 185. راهنمای جامع چارچوب مجموعه جاوا

در گروه منتشر شد
منبع: Medium این آموزش به شما کمک می کند تا عملکرد کلاس ها و رابط های مختلف موجود در Java Collection Framework را بهتر درک کنید. قهوه استراحت شماره 185.  راهنمای جامع چارچوب مجموعه جاوا - 1Java Collection چارچوبی است که یک معماری یکپارچه برای ذخیره و مدیریت گروهی از اشیاء ارائه می دهد. در هسته خود، مجموعه ای از کلاس ها و رابط ها است که یک راه استاندارد برای نمایش و دستکاری مجموعه ای از اشیاء در زبان جاوا ارائه می دهد. این چارچوب همچنین به پیاده سازی ساختارهای داده رایج مانند List، Set و Map کمک می کند. چارچوب مجموعه جاوا شامل چندین رابط و کلاس است. در اینجا لیستی از برخی از آنها آورده شده است:

رابط ها

واسط ها در چارچوب مجموعه جاوا، رفتار و عملیات کلی را که می توان روی مجموعه ها انجام داد، تعریف می کند. این شامل افزودن یا حذف موارد، تکرار موارد در یک مجموعه و موارد دیگر است.
  • مجموعه : رابط ریشه در سلسله مراتب مجموعه، نشان دهنده گروهی از اشیاء شناخته شده به عنوان عناصر است.
  • لیست : مجموعه ای مرتب از عناصر که امکان تکرار را فراهم می کند.
  • مجموعه : مجموعه ای از عناصری که امکان تکرار را ندارند.
  • نقشه : مجموعه ای از جفت های کلید-مقدار، که در آن هر کلید منحصر به فرد است.
  • صف : صف ساختار داده ای است که برای ذخیره عناصر به ترتیب اول در اول خروج (FIFO) استفاده می شود.
این لیست همه چیز را شامل نمی شود، بلکه فقط پرکاربردترین رابط های موجود در Java Collection Framework را شامل می شود. حالا بیایید نگاهی دقیق تر به هر یک از آنها بیندازیم.

مجموعه

مجموعه مجموعه ای از اشیاء است که به عنوان عناصر آن شناخته می شوند. این شیئی است که می تواند ارجاعاتی به اشیاء دیگر داشته باشد. رابط Collection ریشه سلسله مراتب مجموعه است. این رابط پایه برای همه مجموعه ها در Java Collection Framework است. متدهای اساسی را که باید در همه مجموعه ها پیاده سازی شوند، مانند add() ، remove() و contain() تعریف می کند . در اینجا نمونه ای از استفاده از مجموعه ها در Java Collection Framework آورده شده است. در اینجا رابط Collection برای افزودن و حذف عناصر از یک مجموعه استفاده می شود:
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
همانطور که می بینید، رابط Collection یک راه ساده و راحت برای انجام عملیات رایج با مجموعه ای از اشیاء است. هنگام کار با مجموعه ها در جاوا اغلب به عنوان نقطه شروع استفاده می شود. چارچوب مجموعه جاوا شامل چندین رابط است که رفتار مشترک را برای انواع مختلف مجموعه ها تعریف می کند. برخی از آنها بخشی از گروه رابط java.util.Collection هستند :
  • java.util.list
  • java.util.set
  • java.util.Queue

java.util.list

لیست مجموعه ای مرتب شده از اشیاء است که هر عنصر از آنها موقعیت خاصی را در لیست اشغال می کند. رابط List رابط مجموعه را گسترش می دهد و چندین روش برای کار با لیست ها اضافه می کند، مانند روش هایی برای دسترسی به عناصر بر اساس موقعیت آنها در لیست و روش هایی برای جستجو و مرتب سازی لیست ها. یک لیست می تواند حاوی عناصر تکراری باشد ، این عناصر را می توان با موقعیت آنها در لیست دسترسی داشت. در اینجا مثالی از استفاده از رابط 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

یک مجموعه در چارچوب مجموعه جاوا مجموعه ای نامرتب از عناصر منحصر به فرد است که اجازه تکرار عناصر را نمی دهد . رابط Set رابط مجموعه را گسترش می دهد و چندین روش را اضافه می کند، مانند روش هایی برای بررسی اینکه آیا یک عنصر در یک مجموعه قرار دارد یا خیر و روش هایی برای افزودن و حذف عناصر از یک مجموعه. در اینجا مثالی از استفاده از رابط Set برای افزودن و حذف عناصر از مجموعه در چارچوب مجموعه جاوا آورده شده است:
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) استفاده می شود. این بدان معناست که اولین عنصر اضافه شده به صف اولین عنصر حذف شده خواهد بود. در اینجا مثالی از نحوه استفاده از صف در چارچوب مجموعه جاوا آورده شده است:
// 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);
در این مثال، با افزودن سه عنصر به آن، نقشه‌ای از رشته‌ها و اعداد صحیح ایجاد می‌کنیم: «سیب» با ۱، «موز» با ۲ و «نارنجی» ۳. سپس نقشه را چاپ می‌کنیم تا معنای فعلی آن را ببینیم. پس از آن، مقدار کلید "موز" را دریافت کرده و آن را در کنسول چاپ می کنیم. در نهایت، جفت کلید-مقدار برای "نارنجی" را از نقشه حذف می کنیم و نقشه به روز شده را چاپ می کنیم تا ببینیم عنصر حذف شده دیگر وجود ندارد.

کلاس ها

یک کلاس یک پیاده سازی مشخص از یک رابط مجموعه است. این برنامه پیاده سازی های خاصی از رفتارها و عملیات مشترک تعریف شده توسط رابط ها در چارچوب را ارائه می دهد.
  • ArrayList : پیاده سازی رابط List با یک آرایه قابل تغییر اندازه.
  • LinkedList : یک لیست با پیوند دوگانه، یک پیاده سازی از رابط های List و Deque .
  • HashSet : پیاده سازی Set که از جدول هش برای ذخیره سازی استفاده می کند.
  • TreeSet : پیاده سازی Set که از درخت برای ذخیره سازی استفاده می کند.
  • HashMap : پیاده سازی Map که از جدول هش برای ذخیره سازی استفاده می کند.
لیست بالا یکی از پرکاربردترین کلاس ها در Java Collection Framework است. حال بیایید به توضیح دقیق این کلاس ها نگاه کنیم.

ArrayList

کلاس java.util.ArrayList در مجموعه های جاوا برای ذخیره یک آرایه قابل تغییر اندازه از عناصر در یک لیست استفاده می شود. این یک پیاده‌سازی گسترده از رابط java.util.List است که از یک آرایه برای ذخیره عناصر استفاده می‌کند و روش‌های کارآمدی را برای دسترسی، اصلاح و تکرار از طریق عناصر در یک لیست ارائه می‌دهد. کلاس java.util.ArrayList دسترسی تصادفی سریع به عناصر خود را فراهم می کند، اما درج و حذف کند را در موقعیت های تصادفی فراهم می کند. در زیر نمونه ای از استفاده از کلاس ArrayList در Java Collection Framework آورده شده است:
// Создаем 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 را از لیست آرایه حذف می کنیم و یک لیست آرایه به روز شده را چاپ می کنیم تا مطمئن شویم که عنصر حذف شده دیگر در لیست نیست.

LinkedList

کلاس java.util.LinkedList در Java Collection Framework از کلاس AbstractList به ارث می رسد و رابط های List و Deque را پیاده سازی می کند . روش‌های کارآمدی را برای افزودن، حذف و دسترسی به عناصر در ابتدا و انتهای فهرست ارائه می‌کند. این کلاس همچنین یک پیاده سازی از رابط List است که از یک لیست دوگانه برای ذخیره عناصر استفاده می کند. درج و حذف سریع در موقعیت های دلخواه را فراهم می کند، اما دسترسی تصادفی آهسته به عناصر آن را فراهم می کند. در اینجا مثالی از نحوه استفاده از کلاس LinkedList در چارچوب مجموعه جاوا آورده شده است:
// Создаем 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 برای ذخیره مجموعه ای از عناصر منحصر به فرد در یک مجموعه استفاده می شود. این یک پیاده سازی مبتنی بر جدول هش از رابط java.util.Set را ارائه می دهد. همچنین درج، حذف و جستجوی سریع را فراهم می کند، اما ترتیب عناصر خود را حفظ نمی کند. در زیر نمونه ای از استفاده از کلاس HashSet در چارچوب مجموعه جاوا آورده شده است:
// Создаем 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);
در اینجا ما یک مجموعه هش از رشته ها ایجاد کردیم و سه عنصر به آن اضافه کردیم: "رز"، "سوسن" و "لوتوس". سپس سعی می کنیم عنصر "رز" را دوباره اضافه کنیم، اما از آنجایی که مجموعه هش اجازه تکرار را نمی دهد، اضافه نخواهد شد. پس از این، مجموعه هش را چاپ می کنیم تا وضعیت فعلی آن را ببینیم. سپس عنصر "lily" را از مجموعه حذف می کنیم و هش به روز شده مجموعه را چاپ می کنیم تا ببینیم عنصر حذف شده دیگر در مجموعه نیست.

مجموعه درختی

کلاس java.util.TreeSet در Java Collection Framework برای ذخیره مجموعه ای از عناصر منحصر به فرد در مجموعه ای که به ترتیب صعودی مرتب شده اند استفاده می شود. این یک پیاده سازی مبتنی بر درخت از رابط java.util.Set برای ذخیره عناصر بدون اجازه دادن به عناصر تکراری ارائه می دهد. کلاس درج، حذف و جستجوی سریع را فراهم می کند و ترتیب عناصر خود را بر اساس ترتیب طبیعی یا مقایسه کننده آنها حفظ می کند. در اینجا مثالی از نحوه استفاده از کلاس TreeSet در چارچوب مجموعه جاوا آورده شده است:
// Создаем 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);
در این مثال، یک مجموعه درختی از رشته ها ایجاد می کنیم و سه عنصر "سیب"، "موز" و "پرتقال" را به آن اضافه می کنیم. سپس سعی می کنیم عنصر "apple" را دوباره اضافه کنیم، اما از آنجایی که مجموعه درختی اجازه تکرار را نمی دهد، اضافه نخواهد شد. پس از این، مجموعه درختی را چاپ می کنیم تا وضعیت فعلی آن را ببینیم. از آنجایی که مجموعه درختی به ترتیب صعودی مرتب شده است، عناصر به ترتیب چاپ می شوند: "سیب"، "موز" و "نارنجی". سپس عنصر "banana" را از مجموعه حذف می کنیم و مجموعه درختی به روز شده را چاپ می کنیم تا ببینیم عنصر حذف شده دیگر در مجموعه نیست.

HashMap

کلاس java.util.HashMap در Java Collection Framework برای ذخیره نگاشت کلیدها به مقادیر در نقشه استفاده می شود. این یک پیاده سازی مبتنی بر جدول هش رابط java.util.Map را ارائه می دهد و اجازه می دهد تا عناصر به عنوان جفت کلید-مقدار ذخیره شوند. کلاس درج، حذف و جستجوی سریع را فراهم می کند، اما ترتیب عناصر خود را حفظ نمی کند. در اینجا مثالی از نحوه استفاده از کلاس HashMap در چارچوب مجموعه جاوا آورده شده است:
// Создаем 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 Framework مجموعه‌ای از کلاس‌ها و رابط‌ها است که روشی استاندارد برای نمایش و دستکاری مجموعه‌هایی از اشیاء در زبان برنامه‌نویسی جاوا ارائه می‌کند. این به توسعه دهندگان / آزمایش کنندگان اجازه می دهد تا با مجموعه ای از اشیاء به شیوه ای سازگار و کارآمد کار کنند. این فریم ورک روش‌هایی را برای ذخیره، دسترسی و مدیریت آیتم‌ها در یک مجموعه در اختیار آنها قرار می‌دهد و به آنها اجازه می‌دهد تا بسته به نیاز برنامه به راحتی بین پیاده‌سازی مجموعه‌های مختلف جابجا شوند.
نظرات
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION