Wyświetlanie tablicy - metoda toString()
Metoda toString() zwraca tablicą jednowymiarową w formie tekstowej. Poszczególne elementy oddzielone są przecinkami. Jako parametr wywołania podajemy interesującą nas tablicę.
1.
int
[] tablica = {
3
,
8
,
5
,
6
,
9
,
2
,
7
,
4
,
1
};
2.
System.out.println(Arrays.toString(tablica));
[3, 8, 5, 6, 9, 2, 7, 4, 1]Jest to znaczące ułatwienie wyświetlania wszelkiego rodzaju tablic (nie musimy juz stosować pętli for). Dla tablic wielowymiarowych istnieje rekurencyjna wersja tej metody o nazwie deepToString().
1.
int
[][] macierz = { {
3
,
8
,
5
},
2.
{
5
,
9
,
2
},
3.
{
7
,
4
,
1
} };
4.
5.
System.out.println(Arrays.deepToString(macierz));
[[3, 8, 5], [5, 9, 2], [7, 4, 1]]Wypełnianie tablicy wartością - metoda fill()
Gdy chcemy wypełnić zawartość tablicy jakąś wartością możemy wykorzystać metodę fill(). Ma ona dwa parametry, pierwszy tablicę i drugi wartość jaką chcemy ją wypełnić.
1.
int
[] tablica = {
3
,
8
,
5
,
6
,
9
,
2
,
7
,
4
,
1
};
2.
System.out.println(Arrays.toString(tablica));
3.
4.
Arrays.fill(tablica,
14
);
5.
System.out.println(Arrays.toString(tablica));
[3, 8, 5, 6, 9, 2, 7, 4, 1] [14, 14, 14, 14, 14, 14, 14, 14, 14]Możemy również wykorzystać wypełnianie tylko części tablicy określoną wartością. Wykorzystamy do tego inną wersję metody fill() z czterema parametrami (dwa dodatkowe to indeks pierwszego i ostatniego elementu, który będziemy zmieniać, w przykładzie wartości 2 i 5).
1.
int
[] tablica = {
3
,
8
,
5
,
6
,
9
,
2
,
7
,
4
,
1
};
2.
System.out.println(Arrays.toString(tablica));
3.
4.
Arrays.fill(tablica,
2
,
5
,
14
);
5.
System.out.println(Arrays.toString(tablica));
[3, 8, 5, 6, 9, 2, 7, 4, 1] [3, 8, 14, 14, 14, 2, 7, 4, 1]Sortowanie tablicy - metoda sort()
Tablice możemy sortować za pomocą metody sort() (wykorzystywany jest algorytm sortowania szybkiego - quickSort).
1.
int
[] tablica = {
3
,
8
,
5
,
6
,
9
,
2
,
7
,
4
,
1
};
2.
System.out.println(Arrays.toString(tablica));
3.
4.
Arrays.sort(tablica);
5.
System.out.println(Arrays.toString(tablica));
[3, 8, 5, 6, 9, 2, 7, 4, 1] [1, 2, 3, 4, 5, 6, 7, 8, 9]Przeciążona wersja metody sort() (z trzema parametrami) umożliwia sortowanie tylko części tablicy. Dodatowo podajemy indeks pierwszego i ostatniego elementu do sortowania. Jeżeli nasza tablica zawiera obiekty to muszą one implementować interfejs Comparable (pisałem o nim w poście Porównujemy obiekty - interfejs Comparable<T>).
Wyszukiwanie elementu - metoda binarySearch()
Znalezienie szukanej wartości w tablicy to zadanie dla metody binarySearch(). Ponieważ wykorzystuje ona wyszukiwanie binarne to tablica musi być już wstępnie posortowana. Metoda zwraca numer indeksu, na którym znajduje się poszukiwany element lub wartośc -1 jeśli taki element nie występuje w tablicy. Poniższy przykład sortuje tablicę oraz szuka w niej wartości 4.
1.
int
[] tablica = {
3
,
8
,
5
,
6
,
9
,
2
,
7
,
4
,
1
};
2.
System.out.println(Arrays.toString(tablica));
3.
4.
Arrays.sort(tablica);
5.
System.out.println(Arrays.toString(tablica));
6.
7.
System.out.println(Arrays.binarySearch(tablica,
4
));
[3, 8, 5, 6, 9, 2, 7, 4, 1] [1, 2, 3, 4, 5, 6, 7, 8, 9] 3Możemy również wykorzystać przeciążoną wersję metody binarySearch() wyszukującą tylko w określonej części posortowanej tablicy.
Porównywanie zawartości tablic - metoda equals()
Sprawdzenie czy dwie tablice są takie same (zawierają takie same elementy) realizowane jest za pomocą metody equals(). Zwraca ona prawdę (wartość true) jeśli tak i fałsz (wartość false) jeśli nie.
1.
int
[] tablicaA = {
3
,
8
,
5
,
6
,
9
,
2
,
7
,
0
,
1
};
2.
int
[] tablicaB = {
3
,
8
,
5
,
6
,
9
,
2
,
7
,
4
,
1
};
3.
4.
if
(Arrays.equals(tablicaA, tablicaB))
5.
System.out.println (
"Tablice są takie same."
);
6.
else
7.
System.out.println (
"Tablice są różne."
);
Tablice są różne.Dla tablic wielowymiarowych odpowiednią metodą porównującą jest deepEquals().
Mieszanie zawartości tablicy...
Ostatnia przydatna rzecz to możliwość pomieszania elementów występujących w tablicy. Nie do końca ma to związek z klasą Arrays, ale... Załóżmy, że mamy taką tablicę:
1.
String[] imiona = {
"Adam"
,
"Marek"
,
"Iwona"
,
"Patryk"
,
"Dorota"
,
"Ewa"
};
1.
Collections.shuffle(Arrays.asList(imiona));
2.
System.out.println(Arrays.toString(imiona));
[Marek, Patryk, Ewa, Dorota, Adam, Iwona]Elementami kolekcji mogą być tylko typy obiektowe. Gdybyśmy chcieli pomieszać typy prymitywne to wystarczy użyć klas opakowujących i tak na przykład dla tablicy z wartościami typu int możemy użyć poniższego kodu (konwersja między typem int, a Integer jest automatyczna).
1.
Integer[] tablica = {
3
,
8
,
5
,
6
,
9
,
2
,
7
,
4
,
1
};
2.
Collections.shuffle(Arrays.asList(tablica));
3.
System.out.println(Arrays.toString(tablica));
[1, 9, 6, 3, 7, 2, 5, 4, 8]
2 Komentarze - Klasa Arrays - przykłady zastosowań
Witam.
Warto zwrocic uwage, ze w czteroargumentowej metodzie fill, przedzial wartosci, ktore beda wypelniane jest lewostronnie domkniety i prawostronnie otwarty. Dla mnie bylo to troche dziwne :)
czyli tak sie to robi
Prześlij komentarz
Możesz użyć niektórych tagów HTML, takich jak <b>, <i>, <u>, <a> Nie spamuj :)