
– 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
}
}
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.
GO TO FULL VERSION