Przykłady użycia ArrayList i generyków - 1

– A może zacznę od tego, co naprawdę jest przydatne? Przedstawię Ci kilka przykładów praktycznego użycia ArrayList i generyków:

Przykład 1:

Wczytaj listę liczb z klawiatury
public static void main(String[] args) throws IOException
{
    BufferedReader reader = new BufferedReader(new InputStreamReader(System.in) );
    ArrayList<Integer> lista = new ArrayList<Integer>();

    while (true)
    {
        String s = reader.readLine();
        if (s.isEmpty()) break;
        lista.add(Integer.parseInt(s));
    }
}

Przykład 2:

Podobnie do powyższego, tylko na końcu listy dodane są liczby parzyste, a nieparzyste – na jej początku.
public static void main(String[] args) throws IOException
{
    BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
    ArrayList<Integer> lista = new ArrayList<Integer>();

    while (true)
    {
        String s = reader.readLine();
        if (s.isEmpty()) break;

        int x = Integer.parseInt(s);
        if (x % 2 == 0)  // Sprawdza, czy reszta z dzielenia przez dwa jest równa zero
            lista.add(x);         // Dodaje na końcu
        else
            lista.add(0, x);      // Dodaje do początku
    }
}

Przykład 3:

Usuń wszystkie liczby większe niż 5:
public static void main(String[] args) throws IOException
{
    BufferedReader reader = new BufferedReader(new InputStreamReader(System.in) );
    ArrayList<Integer> lista = new ArrayList<Integer>();

    lista.add(1);
    lista.add(7);
    lista.add(11);
    lista.add(3);
    lista.add(15);

    for (int i = 0; i < lista.size(); ) // Przenosi twierdzenie, które zwiększa i do wnątrza pętli
    {
        if (lista.get(i) > 5)
            lista.remove(i);  // Nie zwiększa i, jeśli usunięty został bieżący element
        else
            i++;
    }
}

Przykład 4:

Podziel tablicę na dwie części – liczby parzyste i nieparzyste
public static void main(String[] args) throws IOException
{
    // Statyczna inicjalizacja tablicy
    int[] data = {1, 5, 6, 11, 3, 15, 7, 8};

    // Tworzy listę, której wszystkie elementy są liczbami całkowitymi
    ArrayList<Integer> lista = new ArrayList<Integer> ();

    // Używa tablicy, aby zapełnić listę
    for (int i = 0; i < data.length; i++) lista.add(data[i]);

    ArrayList<Integer> parzyste = new ArrayList<Integer>();  // Liczby parzyste
    ArrayList<Integer> nieparzyste = new ArrayList<Integer>();    // Liczby nieparzyste

    for (int i = 0; i < lista.size(); i++)
    {
        Integer x = lista.get(i);
        if (x % 2 == 0)    // Jeśli x jest parzysty
            parzyste.add(x);   // Dodaj x do kolekcji liczb parzystych
        else
            nieparzyste.add(x);    // Dodaj x do kolekcji liczb nieparzystych
    }
}
2
Zadanie
Składnia Java,  poziom 7lekcja 8
Niedostępne
Wprowadzanie kodu
Nie musisz myśleć, po prostu go wyklep! Brzmi to trochę paradoksalnie, ale czasami Twoje palce „pamiętają” kod lepiej niż Twój świadomy umysł. Właśnie dlatego trening w tajnym centrum CodeGym zawiera zadania wymagające wprowadzania kodu. Wprowadzając kod, przyzwyczajasz się do składni oraz zarabiasz ciemną materię. Co więcej, walczysz z własnym lenistwem!

Przykład 5:

Scal różne listy
public static void main(String[] args) throws IOException
{
    ArrayList<Integer> lista1 = new ArrayList<Integer>();   // Tworzy listę
    Collections.addAll(lista1, 1, 5, 6, 11, 3, 15, 7, 8);   // Zapełnia listę

    ArrayList<Integer> lista2 = new ArrayList<Integer>();
    Collections.addAll(lista2, 1, 8, 6, 21, 53, 5, 67, 18);

    ArrayList<Integer> wynik = new ArrayList<Integer>();

    wynik.addAll(lista1);   // Dodaje wszystkie wartości z każdej listy do nowej listy
    wynik.addAll(lista2);

    for (Integer x : wynik)   // Szybki sposób na zapętlenie wszystkich elementów, tylko dla kolekcji
    {
        System.out.println(x);
    }
}

– Super! Czyżby zaraz miał przyjechać Diego z ciężarówką pełną podobnych zadań?

– Tak, już tu jest.