W programowaniu Java, często potrzebujemy pracować z kolekcjami danych. W zależności od potrzeb, można wybrać różne metody inicjalizacji tych kolekcji. W tym artykule omówimy różnicę między używaniem Collections.emptyList() a tworzeniem nowej instancji Collection przykładem w Java.
Przykład Kodu w Java
Poniżej znajduje się kompletny przykład kodu, który ilustruje różnice między Collections.emptyList() a tworzeniem nowej instancji ArrayList. Kod zawiera komentarze w języku polskim, które wyjaśniają działanie poszczególnych fragmentów.
import java.util.Collections; // Importowanie klasy Collections
import java.util.List;        // Importowanie interfejsu List
import java.util.ArrayList;   // Importowanie klasy ArrayList
public class CollectionExample {
    public static void main(String[] args) {
        // Użycie Collections.emptyList()
        List<String> immutableList = Collections.emptyList();
        // Lista immutable, nie można dodawać elementów
        try {
            immutableList.add("Test"); // Próba dodania elementu
        } catch (UnsupportedOperationException e) {
            System.out.println("Nie można dodać elementu: " + e);
        }
        // Tworzenie nowej instancji ArrayList
        List<String> mutableList = new ArrayList<>();
        // Lista mutable, można dodawać elementy
        mutableList.add("Test"); // Dodanie elementu bez błędu
        System.out.println("Element dodany do mutableList: " + mutableList.get(0));
    }
}
Analiza Kodu
- Immutable vs Mutable:
- Collections.emptyList()zwraca niemodyfikowalną, pustą listę. Próba dodania elementu do tej listy skutkuje- UnsupportedOperationException.
- Nowa instancja ArrayListjest modyfikowalna, co pozwala na dodawanie elementów.
 
- Zużycie Pamięci:
- Collections.emptyList()zwraca tę samą instancję przy każdym wywołaniu, co jest korzystne dla zarządzania pamięcią, gdy często używamy pustych list.
- Tworzenie nowej instancji ArrayListkażdorazowo alokuje nową pamięć, co przy wielokrotnym użyciu może być mniej efektywne.
 
Podsumowanie
Wybór między Collections.emptyList() a tworzeniem nowej instancji Collection zależy od konkretnego przypadku użycia. Jeśli potrzebujemy pustej, niemodyfikowalnej listy wielokrotnie, Collections.emptyList() jest lepszym wyborem ze względu na oszczędność pamięci i wydajność. Natomiast, gdy potrzebujemy modyfikowalnej listy, która z czasem będzie zawierała elementy, lepszym rozwiązaniem będzie użycie ArrayList.
Jeżeli chcesz przyśpieszyć swoją naukę tworzenia stron chciałbym polecić mój kurs video Java w którym nauczysz się tego języka od podstaw do zaawansowanych jego aspektów.

