java
Dalam tutorial ini, Anda akan belajar tentang berbagai cara yang dapat Anda gunakan untuk menyalin array (baik satu dimensi dan dua dimensi) di Java dengan bantuan contoh.
Di Java, kita dapat menyalin satu array ke array lain. Ada beberapa teknik yang dapat Anda gunakan untuk menyalin array di Java.
Mari kita ambil contoh,
class Main {
public static void main(String[] args) {
int [] numbers = {1, 2, 3, 4, 5, 6};
int [] positiveNumbers = numbers; // copying arrays
for (int number: positiveNumbers) {
System.out.print(number + ", ");
}
}
}
Keluaran :
1, 2, 3, 4, 5, 6
Pada contoh di atas, kita telah menggunakan operator penugasan (=
) untuk menyalin larik bernama numbers ke array lain bernama positiveNumbers .
Teknik ini adalah yang paling mudah dan berhasil juga. Namun, ada masalah dengan teknik ini. Jika kita mengubah elemen dari satu array, elemen yang sesuai dari array lain juga berubah. Misalnya,
class Main {
public static void main(String[] args) {
int [] numbers = {1, 2, 3, 4, 5, 6};
int [] positiveNumbers = numbers; // copying arrays
// change value of first array
numbers[0] = -1;
// printing the second array
for (int number: positiveNumbers) {
System.out.print(number + ", ");
}
}
}
Keluaran :
-1, 2, 3, 4, 5, 6
Di sini, kita dapat melihat bahwa kita telah mengubah satu nilai dari angka Himpunan. Saat kita mencetak positiveNumbers array, kita dapat melihat bahwa nilai yang sama juga berubah.
Itu karena kedua array merujuk ke objek array yang sama. Ini karena salinannya yang dangkal. Untuk mempelajari lebih lanjut tentang salinan dangkal, kunjungi salinan dangkal.
Sekarang, untuk membuat objek array baru saat menyalin array, kita membutuhkan salinan dalam daripada salinan dangkal.
Mari kita ambil contoh:
import java.util.Arrays;
class Main {
public static void main(String[] args) {
int [] source = {1, 2, 3, 4, 5, 6};
int [] destination = new int[6];
// iterate and copy elements from source to destination
for (int i = 0; i < source.length; ++i) {
destination[i] = source[i];
}
// converting array to string
System.out.println(Arrays.toString(destination));
}
}
Keluaran :
[1, 2, 3, 4, 5, 6]
Pada contoh di atas, kami telah menggunakan for
loop untuk beralih melalui setiap elemen dari array sumber. Dalam setiap iterasi, kami menyalin elemen dari sumber larik ke tujuan larik.
Di sini, larik sumber dan tujuan merujuk ke objek yang berbeda (salinan dalam). Oleh karena itu, jika elemen dari satu array diubah, elemen yang sesuai dari array lain tidak berubah.
Perhatikan pernyataannya,
System.out.println(Arrays.toString(destination));
Di sini, metode toString() digunakan untuk mengubah array menjadi string. Untuk mempelajari lebih lanjut, kunjungi metode toString() (dokumentasi resmi Java).
Di Java, kelas Sistem berisi metode bernama arraycopy()
untuk menyalin array. Metode ini adalah pendekatan yang lebih baik untuk menyalin array daripada dua metode di atas.
arraycopy()
metode ini memungkinkan Anda untuk menyalin bagian tertentu dari larik sumber ke larik tujuan. Misalnya,
arraycopy(Object src, int srcPos,Object dest, int destPos, int length)
Di sini,
Mari kita ambil contoh:
// To use Arrays.toString() method
import java.util.Arrays;
class Main {
public static void main(String[] args) {
int[] n1 = {2, 3, 12, 4, 12, -2};
int[] n3 = new int[5];
// Creating n2 array of having length of n1 array
int[] n2 = new int[n1.length];
// copying entire n1 array to n2
System.arraycopy(n1, 0, n2, 0, n1.length);
System.out.println("n2 = " + Arrays.toString(n2));
// copying elements from index 2 on n1 array
// copying element to index 1 of n3 array
// 2 elements will be copied
System.arraycopy(n1, 2, n3, 1, 2);
System.out.println("n3 = " + Arrays.toString(n3));
}
}
Keluaran :
n2 = [2, 3, 12, 4, 12, -2] n3 = [0, 12, 4, 0, 0]
Pada contoh di atas, kami telah menggunakan arraycopy()
metode,
System.arraycopy(n1, 0, n2, 0, n1.length)
- seluruh elemen dari n1 array disalin ke n2 susunanSystem.arraycopy(n1, 2, n3, 1, 2)
- 2 elemen n1 array mulai dari indeks 2 disalin ke indeks mulai dari 1 dari n3 susunanSeperti yang Anda lihat, nilai awal default elemen int jenis larik adalah 0.
Kita juga bisa menggunakan metode copyOfRange() yang didefinisikan di kelas Java Arrays untuk menyalin array. Misalnya,
// To use toString() and copyOfRange() method
import java.util.Arrays;
class ArraysCopy {
public static void main(String[] args) {
int[] source = {2, 3, 12, 4, 12, -2};
// copying entire source array to destination
int[] destination1 = Arrays.copyOfRange(source, 0, source.length);
System.out.println("destination1 = " + Arrays.toString(destination1));
// copying from index 2 to 5 (5 is not included)
int[] destination2 = Arrays.copyOfRange(source, 2, 5);
System.out.println("destination2 = " + Arrays.toString(destination2));
}
}
Keluaran
destination1 = [2, 3, 12, 4, 12, -2] destination2 = [12, 4, 12]
Pada contoh di atas, perhatikan baris,
int[] destination1 = Arrays.copyOfRange(source, 0, source.length);
Di sini, kita dapat melihat bahwa kita sedang membuat destination1 array dan menyalin sumber array untuk itu pada waktu yang sama. Kami tidak membuat destination1 array sebelum memanggil copyOfRange()
metode. Untuk mempelajari lebih lanjut tentang metode ini, kunjungi Java copyOfRange.
Mirip dengan array satu dimensi, kita juga dapat menyalin array 2 dimensi menggunakan for
lingkaran. Misalnya,
import java.util.Arrays;
class Main {
public static void main(String[] args) {
int[][] source = {
{1, 2, 3, 4},
{5, 6},
{0, 2, 42, -4, 5}
};
int[][] destination = new int[source.length][];
for (int i = 0; i < destination.length; ++i) {
// allocating space for each row of destination array
destination[i] = new int[source[i].length];
for (int j = 0; j < destination[i].length; ++j) {
destination[i][j] = source[i][j];
}
}
// displaying destination array
System.out.println(Arrays.deepToString(destination));
}
}
Keluaran :
[[1, 2, 3, 4], [5, 6], [0, 2, 42, -4, 5]]
Pada program di atas, perhatikan baris,
System.out.println(Arrays.deepToString(destination);
Di sini, deepToString()
Metode ini digunakan untuk memberikan representasi yang lebih baik dari array 2 dimensi. Untuk mempelajari lebih lanjut, kunjungi Java deepToString().
Untuk membuat kode di atas lebih sederhana, kita dapat mengganti loop dalam dengan System.arraycopy()
seperti dalam kasus array satu dimensi. Misalnya,
import java.util.Arrays;
class Main {
public static void main(String[] args) {
int[][] source = {
{1, 2, 3, 4},
{5, 6},
{0, 2, 42, -4, 5}
};
int[][] destination = new int[source.length][];
for (int i = 0; i < source.length; ++i) {
// allocating space for each row of destination array
destination[i] = new int[source[i].length];
System.arraycopy(source[i], 0, destination[i], 0, destination[i].length);
}
// displaying destination array
System.out.println(Arrays.deepToString(destination));
}
}
Keluaran :
[[1, 2, 3, 4], [5, 6], [0, 2, 42, -4, 5]]
Di sini, kita dapat melihat bahwa kita mendapatkan output yang sama dengan mengganti for
bagian dalam loop dengan arraycopy()
metode.
java
Sebuah array deklarasi jaring atau variabel dapat berupa skalar atau vektor. Sejumlah dimensi dapat dibuat dengan menentukan rentang alamat setelah nama pengenal dan disebut array multi-dimensi. Array diperbolehkan di Verilog untuk reg , wire , integer dan real tipe data. reg y1 [11:0]
Java menyediakan struktur data, array , yang menyimpan kumpulan elemen berurutan berukuran tetap dari jenis yang sama. Array digunakan untuk menyimpan kumpulan data, tetapi seringkali lebih berguna untuk menganggap array sebagai kumpulan variabel dengan tipe yang sama. Alih-alih mendeklarasikan var
Array sejenis struktur data yang dapat menyimpan kumpulan elemen berurutan berukuran tetap dari jenis yang sama. Array digunakan untuk menyimpan kumpulan data, tetapi seringkali lebih berguna untuk menganggap array sebagai kumpulan variabel dengan tipe yang sama. Alih-alih mendeklarasikan variabel
Array menyimpan kumpulan elemen berurutan berukuran tetap dari tipe yang sama. Array digunakan untuk menyimpan kumpulan data, tetapi seringkali lebih berguna untuk menganggap array sebagai kumpulan variabel dari tipe yang sama yang disimpan di lokasi memori yang berdekatan. Alih-alih mendeklarasika