Kopiowanie tablic: płytkie i głębokie
Tablice - Podstawy Javy (Java)
Rodzaje kopiowania: Płytkie kopiowanie - kopiuje referencję, obie zmienne wskazują na tę samą tablicę Głębokie kopiowanie - tworzy nową tablicę z kopiami elementów Metody kopiowania: Pętla for - najprostsze, ale najmniej wydajne System.arraycopy() - natywna metoda, bardzo wydajna Arrays.copyOf() - wygodna metoda z klasy Arrays Arrays.copyOfRange() - kopiowanie fragmentu tablicy Przydatne metody z klasy Arrays: toString() - konwersja tablicy na String fill() - wypełnianie tablicy wartością sort() - sortowanie tablicy binarySearch() - wyszukiwanie binarne equals() - porównywanie tablic Zmiana rozmiaru: Wykorzystanie Arrays.copyOf() z nowym rozmiarem Możliwość zwiększenia lub zmniejszenia tablicy
import java.util.Arrays;
public class Main {
public static void main(String[] args) {
// Tablica początkowa
int[] original = {1, 2, 3, 4, 5};
System.out.println("Oryginalna tablica: " + Arrays.toString(original));
// 1. Płytkie kopiowanie (przez referencję)
int[] shallowCopy = original;
shallowCopy[0] = 10; // Ta zmiana wpłynie też na original
System.out.println("\nPo płytkim kopiowaniu:");
System.out.println("Original: " + Arrays.toString(original));
System.out.println("Shallow copy: " + Arrays.toString(shallowCopy));
// 2. Kopiowanie przez pętlę
int[] loopCopy = new int[original.length];
for (int i = 0; i < original.length; i++) {
loopCopy[i] = original[i];
}
// 3. Kopiowanie za pomocą System.arraycopy()
int[] systemCopy = new int[original.length];
System.arraycopy(original, 0, systemCopy, 0, original.length);
// 4. Kopiowanie za pomocą Arrays.copyOf()
int[] arraysCopy = Arrays.copyOf(original, original.length);
// 5. Kopiowanie fragmentu tablicy
int[] partialCopy = Arrays.copyOfRange(original, 1, 4); // indeksy 1,2,3
System.out.println("\nFragment tablicy: " + Arrays.toString(partialCopy));
// 6. Zmiana rozmiaru tablicy
int[] resizedArray = Arrays.copyOf(original, original.length + 3);
System.out.println("\nPowiększona tablica: " + Arrays.toString(resizedArray));
// 7. Wypełnianie tablicy wartością
Arrays.fill(resizedArray, original.length, resizedArray.length, -1);
System.out.println("Wypełniona tablica: " + Arrays.toString(resizedArray));
// 8. Sortowanie tablicy
int[] unsorted = {5, 2, 8, 1, 9, 3};
Arrays.sort(unsorted);
System.out.println("\nPosortowana tablica: " + Arrays.toString(unsorted));
// 9. Wyszukiwanie binarne (w posortowanej tablicy)
int index = Arrays.binarySearch(unsorted, 8);
System.out.println("Indeks elementu 8: " + index);
// 10. Porównywanie tablic
int[] arr1 = {1, 2, 3};
int[] arr2 = {1, 2, 3};
int[] arr3 = {1, 2, 4};
System.out.println("\nPorównanie tablic:");
System.out.println("arr1 equals arr2: " + Arrays.equals(arr1, arr2));
System.out.println("arr1 equals arr3: " + Arrays.equals(arr1, arr3));
}
} Ładowanie interaktywnego edytora... Jeśli się nie pojawi, włącz JavaScript.
Wszystkie lekcje kursu Podstawy Javy · Zaloguj się, aby zapisać postęp na koncie.