Bagaimana cara membuat sub-array dari array lain? Apakah ada metode yang mengambil indeks dari array pertama seperti:
methodName(object array, int start, int end)
Saya tidak ingin pergi membuat loop dan membuat program saya menderita.
Saya terus mendapatkan kesalahan:
tidak dapat menemukan metode simbol copyOfRange (int [], int, int)
Ini kode saya:
import java.util.*;
public class testing
{
public static void main(String [] arg)
{
int[] src = new int[] {1, 2, 3, 4, 5};
int b1[] = Arrays.copyOfRange(src, 0, 2);
}
}
org.bouncycastle.util.Arrays
.Arrays.copyOfRange(..)
telah ditambahkan di Java 1.6. Jadi mungkin Anda tidak memiliki versi terbaru. Jika tidak memungkinkan untuk ditingkatkan, lihatSystem.arraycopy(..)
sumber
Gunakan metode copyOfRange dari kelas java.util.Arrays:
int[] newArray = Arrays.copyOfRange(oldArray, startIndex, endIndex);
Untuk lebih jelasnya:
Tautan ke pertanyaan serupa
sumber
Ya, ini disebut System.arraycopy (Object, int, Object, int, int) .
Ini masih akan melakukan loop di suatu tempat, kecuali jika ini bisa dioptimalkan menjadi sesuatu seperti
REP STOSW
oleh JIT (dalam hal ini loop berada di dalam CPU).sumber
Menggunakan Apache ArrayUtils yang dapat diunduh di tautan ini Anda dapat dengan mudah menggunakan metode ini
"Boolean" hanyalah sebuah contoh, ada metode untuk semua tipe java primitif
sumber
JDK> = 1.8
Saya setuju dengan semua jawaban di atas. Ada juga cara yang baik dengan Java 8 Streaming:
Manfaatnya adalah, ini dapat berguna untuk berbagai jenis array "src" dan membantu meningkatkan operasi penulisan pipa pada stream.
Tidak khusus tentang pertanyaan ini, tetapi misalnya, jika array sumber adalah
double[]
dan kami ingin mengambilaverage()
sub-array:sumber
sumber
Kode sudah benar jadi saya menduga Anda menggunakan JDK yang lebih lama. Javadoc untuk metode itu mengatakan sudah ada sejak 1.6. Pada tipe baris perintah:
Saya menduga Anda tidak menjalankan 1.6
sumber
Saya Anda menggunakan java sebelum menggunakan versi 1.6
System.arraycopy()
sebagai gantinya. Atau tingkatkan lingkungan Anda.sumber