JavaRush /Blog Java /Random-PL /Przerwa kawowa #185. Kompleksowy przewodnik po frameworku...

Przerwa kawowa #185. Kompleksowy przewodnik po frameworku zbierania Java

Opublikowano w grupie Random-PL
Źródło: Medium Ten samouczek pomoże ci lepiej zrozumieć działanie różnych klas i interfejsów zawartych w Java Collection Framework. Przerwa kawowa #185.  Wszechstronny przewodnik po środowisku gromadzenia danych w języku Java — 1Kolekcja Java to platforma zapewniająca ujednoliconą architekturę do przechowywania grupy obiektów i zarządzania nią. W swojej istocie jest to zestaw klas i interfejsów, które zapewniają standardowy sposób reprezentowania kolekcji obiektów i manipulowania nimi w języku Java. Framework pomaga również we wdrażaniu powszechnie używanych struktur danych, takich jak Lista, Zestaw i Mapa. Java Collection Framework zawiera kilka interfejsów i klas. Oto lista niektórych z nich:

Interfejsy

Interfejsy w Java Collection Framework definiują ogólne zachowanie i operacje, które można wykonywać na kolekcjach. Obejmuje to dodawanie lub usuwanie elementów, powtarzanie elementów w kolekcji i nie tylko.
  • Kolekcja : Interfejs główny w hierarchii kolekcji, reprezentujący grupę obiektów zwanych elementami.
  • Lista : uporządkowana kolekcja elementów, która umożliwia powielanie.
  • Zestaw : zbiór elementów, które nie pozwalają na powielanie.
  • Mapa : zbiór par klucz-wartość, gdzie każdy klucz jest unikalny.
  • Kolejka : Kolejka to struktura danych używana do przechowywania elementów w kolejności FIFO (First-In-First-Out).
Ta lista nie obejmuje wszystkiego, a jedynie najczęściej używane interfejsy w Java Collection Framework. Przyjrzyjmy się teraz bliżej każdemu z nich.

Kolekcja

Kolekcja to grupa obiektów nazywana jej elementami. Jest to obiekt, który może zawierać odniesienia do innych obiektów. Interfejs Kolekcji jest podstawą hierarchii kolekcji. Jest to podstawowy interfejs dla wszystkich kolekcji w Java Collection Framework. Definiuje podstawowe metody, które muszą zostać zaimplementowane we wszystkich kolekcjach, takie jak add() , usuwania() i zawiera() . Oto przykład użycia kolekcji w Java Collection Framework. Tutaj interfejs Kolekcji służy do dodawania i usuwania elementów z kolekcji:
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());
    }
}
Dane wyjściowe to:
Liczba elementów: 4 Liczba elementów: 3
Jak widać, interfejs Kolekcji to prosty i wygodny sposób wykonywania typowych operacji na kolekcji obiektów. Jest często używany jako punkt wyjścia podczas pracy z kolekcjami w Javie. Java Collection Framework zawiera kilka interfejsów definiujących wspólne zachowanie różnych typów kolekcji. Niektóre z nich należą do grupy interfejsów java.util.Collection :
  • Java.util.List
  • Java.util.set
  • Kolejka java.util

Java.util.List

Lista to uporządkowany zbiór obiektów, których każdy element zajmuje określoną pozycję na liście. Interfejs Lista rozszerza interfejs Kolekcji i dodaje kilka metod pracy z listami, takich jak metody dostępu do elementów na podstawie ich pozycji na liście oraz metody wyszukiwania i sortowania list. Lista może zawierać zduplikowane elementy . Dostęp do tych elementów można uzyskać po ich pozycji na liście. Oto przykład użycia interfejsu Listy do dodawania, usuwania i uzyskiwania dostępu do elementów na liście:
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));
    }
}
Wniosek:
Pierwszy element: Indie Drugi element: Londyn
Jak pokazano powyżej, interfejs List zapewnia wygodny sposób pracy z uporządkowanymi zbiorami elementów. Zwykle używa się go, gdy trzeba zachować kolejność elementów w kolekcji lub gdy trzeba uzyskać dostęp do elementów na podstawie ich indeksu na liście.

Java.util.Set

Zestaw w środowisku zbierania Java to nieuporządkowany zbiór unikalnych elementów , który nie pozwala na powielanie elementów . Interfejs Set rozszerza interfejs Collection i dodaje kilka metod, takich jak metody sprawdzania, czy element znajduje się w zestawie oraz metody dodawania i usuwania elementów ze zbioru. Oto przykład użycia interfejsu Set do dodawania i usuwania elementów zestawu w Java Collection Framework:
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'");
        }
    }
}
Wniosek:
Zestaw zawiera element „Marzec” Zestaw nie zawiera już elementu „Kwiecień”

Kolejka java.util

Kolejka to struktura danych używana do przechowywania elementów w kolejności „pierwszy na wejściu, pierwszy na wyjściu” (FIFO). Oznacza to, że pierwszy element dodany do kolejki będzie pierwszym elementem usuniętym. Oto przykład użycia kolejki w Java Collection Framework:
// kreacja очереди
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);
W tym przykładzie utworzyliśmy kolejkę stringów i dodaliśmy do niej trzy elementy: „jabłko”, „banan” i „pomarańcza”. Następnie drukujemy kolejkę, aby zobaczyć jej aktualny stan. Następnie usuwamy element z kolejki i wypisujemy go na konsolę. Na koniec drukujemy zaktualizowaną kolejkę, aby mieć pewność, że usuniętego elementu nie ma już w kolejce.

Mapa

Interfejs java.util.Map w Java Collection Framework służy do mapowania kluczy na wartości. Umożliwia przechowywanie elementów jako par klucz-wartość i zapewnia metody uzyskiwania dostępu, modyfikowania i iterowania elementów na mapie. Poniżej znajduje się przykład wykorzystania interfejsu Mapy :
// Создаем 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);
// Получаем oznaczający для определенного ключа
int  value  = map.get( "banana" );
System.out.println("Value for 'banana': " + value);
// Удаляем элемент из Map
map.remove("orange");
// Печать обновленной карты
 System.out.println( "Map: " + map);
W tym przykładzie tworzymy mapę ciągów znaków i liczb całkowitych, dodając do niej trzy elementy: „jabłko” mapuje do 1, „banan” mapuje do 2 i „pomarańczowy” mapuje do 3. Następnie drukujemy mapę, aby zobaczyć jej aktualną oznaczający. Następnie otrzymujemy wartość klucza „banan” i drukujemy ją na konsoli. Na koniec usuwamy z mapy parę klucz-wartość dla „pomarańczowego” i drukujemy zaktualizowaną mapę, aby sprawdzić, czy usuniętego elementu już nie ma.

Zajęcia

Klasa to konkretna implementacja interfejsu kolekcji. Zapewnia specyficzne implementacje typowych zachowań i operacji zdefiniowanych przez interfejsy w ramach.
  • ArrayList : Implementacja interfejsu List z tablicą o zmiennym rozmiarze.
  • LinkedList : podwójnie połączona lista, implementacja interfejsów List i Deque .
  • HashSet : Implementacja Set , która używa tabeli mieszającej do przechowywania.
  • TreeSet : Implementacja Set , która wykorzystuje drzewo do przechowywania.
  • HashMap : Implementacja mapy , która używa tabeli mieszającej do przechowywania.
Powyższa lista jest jedną z najczęściej używanych klas w Java Collection Framework. Przyjrzyjmy się teraz szczegółowemu wyjaśnieniu tych klas.

Lista tablic

Klasa java.util.ArrayList w kolekcjach Java służy do przechowywania tablicy elementów o zmiennym rozmiarze. Jest to szeroko stosowana implementacja interfejsu java.util.List , która wykorzystuje tablicę do przechowywania elementów i zapewnia wydajne metody uzyskiwania dostępu, modyfikowania i iterowania elementów na liście. Klasa java.util.ArrayList zapewnia szybki losowy dostęp do swoich elementów, ale powolne wstawianie i usuwanie w losowych miejscach. Poniżej znajduje się przykład użycia klasy ArrayList w 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);
Jak widać, stworzyliśmy tablicę stringów i dodaliśmy do niej trzy elementy: „qa”, „devops” i „dev”. Następnie wydrukowaliśmy listę tablic, aby zobaczyć jej bieżący stan. Następnie uzyskujemy dostęp do elementu o indeksie 1 i drukujemy go na konsoli. Na koniec usuwamy element o indeksie 1 z listy tablic i drukujemy zaktualizowaną listę tablic, aby upewnić się, że usuniętego elementu nie ma już na liście.

Połączona lista

Klasa java.util.LinkedList w Java Collection Framework dziedziczy po klasie AbstractList i implementuje interfejsy List i Deque . Zapewnia wydajne metody dodawania, usuwania i uzyskiwania dostępu do elementów na początku i na końcu listy. Ta klasa jest także implementacją interfejsu List , który wykorzystuje podwójnie połączoną listę do przechowywania elementów. Zapewnia szybkie wstawianie i usuwanie w dowolnych pozycjach, ale powolny losowy dostęp do swoich elementów. Oto przykład użycia klasy LinkedList w Java Collection Framework:
// Создаем 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);
W tym przykładzie stworzyliśmy połączoną listę ciągów znaków i dodaliśmy do niej trzy elementy: „selen”, „cyprys” i „dramaturg”. Następnie drukujemy połączoną listę, aby zobaczyć jej aktualny stan. Następnie dodajemy element „webdriver.io” na początek listy i drukujemy zaktualizowaną listę powiązaną. Na koniec usuwamy pierwszy element z listy i ponownie drukujemy zaktualizowaną listę połączoną, aby zobaczyć, że usuniętego elementu nie ma już na liście.

Zestaw skrótów

Klasa java.util.HashSet w Java Collection Framework służy do przechowywania kolekcji unikalnych elementów w zestawie. Zapewnia opartą na tablicy skrótów implementację interfejsu java.util.Set . Zapewnia również szybkie wstawianie, usuwanie i wyszukiwanie, ale nie zachowuje kolejności swoich elementów. Poniżej znajduje się przykład użycia klasy HashSet w Java Collection Framework:
// Создаем 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);
Tutaj stworzyliśmy zestaw skrótów ciągów znaków i dodaliśmy do niego trzy elementy: „róża”, „lilia” i „lotos”. Następnie próbujemy ponownie dodać element „róża”, ale ponieważ zestaw skrótów nie pozwala na duplikaty, nie zostanie on dodany. Następnie drukujemy zestaw skrótów, aby zobaczyć jego aktualny stan. Następnie usuwamy element „lilia” ze zbioru i wypisujemy zaktualizowany skrót zbioru, aby sprawdzić, czy usuniętego elementu nie ma już w zestawie.

Zestaw drzew

Klasa java.util.TreeSet w Java Collection Framework służy do przechowywania kolekcji unikalnych elementów w zestawie posortowanym w kolejności rosnącej. Zapewnia opartą na drzewie implementację interfejsu java.util.Set do przechowywania elementów bez zezwalania na duplikowanie elementów. Klasa zapewnia szybkie wstawianie, usuwanie i wyszukiwanie oraz utrzymuje kolejność swoich elementów zgodnie z ich naturalnym porządkiem lub komparatorem. Oto przykład użycia klasy TreeSet w środowisku Java Collection Framework:
// Создаем 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);
W tym przykładzie tworzymy drzewiasty zestaw ciągów i dodajemy do niego trzy elementy: „jabłko”, „banan” i „pomarańcza”. Następnie ponownie próbujemy dodać element „jabłko”, ale ponieważ zestaw drzewa nie pozwala na duplikaty, nie zostanie on dodany. Następnie drukujemy zestaw drzewa, aby zobaczyć jego aktualny stan. Ponieważ zbiór drzewek jest posortowany rosnąco, elementy zostaną wydrukowane w kolejności: „jabłko”, „banan” i „pomarańcza”. Następnie usuwamy element „banan” ze zbioru i drukujemy zaktualizowany zbiór drzewiasty, aby sprawdzić, czy usuniętego elementu nie ma już w zestawie.

HashMapa

Klasa java.util.HashMap w Java Collection Framework służy do przechowywania mapowania kluczy na wartości na mapie. Zapewnia opartą na tablicy mieszającej implementację interfejsu java.util.Map i umożliwia przechowywanie elementów jako par klucz-wartość. Klasa zapewnia szybkie wstawianie, usuwanie i wyszukiwanie, ale nie zachowuje kolejności swoich elementów. Oto przykład użycia klasy HashMap w Java Collection Framework:
// Создаем 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);
// Получаем oznaczający для определенного ключа
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);
W tym przykładzie tworzymy mapę skrótów ciągów liczb całkowitych i dodajemy do niej trzy elementy: „jabłko” pasuje do 1, „banan” pasuje do 2 i „pomarańcza” pasuje do 3. Następnie drukujemy mapę mieszania, aby zobaczyć jej bieżący stan. Następnie otrzymujemy wartość klucza „banan” i drukujemy ją na konsoli. Na koniec usuwamy parę klucz-wartość dla „pomarańczowego” z mapy skrótów i drukujemy zaktualizowaną mapę skrótów, aby sprawdzić, czy usuniętego elementu już w niej nie ma.

Wniosek

Java Collection Framework to zestaw klas i interfejsów zapewniających standardowy sposób reprezentowania kolekcji obiektów i manipulowania nimi w języku programowania Java. Dzięki temu programiści/testerzy mogą pracować z kolekcjami obiektów w spójny i wydajny sposób. Struktura udostępnia metody przechowywania elementów kolekcji, uzyskiwania do nich dostępu i zarządzania nimi, a także umożliwia łatwe przełączanie pomiędzy różnymi implementacjami kolekcji w zależności od wymagań aplikacji.
Komentarze
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION