1.Arrays.fill()

Nalika nggarap array, programer Java asring kudu ngisi array kanthi nilai sing padha. Sampeyan bisa, mesthi, nulis daur ulang lan mung nemtokake sawetara nilai kanggo saben sel array ing daur ulang:

int[] x = new int[100];
for (int i = 0; i < x.length; i++)
x[i] = 999;

Utawa sampeyan mung bisa nelpon Arrays.fill()cara, kang nindakake persis padha: ngisi array liwati karo nilai liwati. Mangkene carane katon:

Arrays.fill(name, value)

Lan kode ing conto ing ndhuwur bisa digawe luwih kompak lan luwih cetha:

int[] x = new int[100];
Arrays.fill(x, 999);

Sampeyan uga bisa nggunakake Arrays.fill()cara kanggo ngisi ora kabeh array, nanging bagean saka iku, karo sawetara nilai:

Arrays.fill(name, first, last, value)

Ing endi pisanan lan pungkasan minangka indeks sel pisanan lan pungkasan sing bakal diisi.

Sesuai karo tradhisi lawas Jawa, elinga yen unsur pungkasan ora kalebu ing sawetara.

Tuladha:

int[] x = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};

Arrays.fill(x, 3, 7, 999);


String str = Arrays.toString(x);


Kita ngisi sel x[3], x[4], x[5], lan x[6]nilai 999. Sel saka array diwilang saka nol!

Variabel strngandhut nilai:
"[1, 2, 3, 999, 999, 999, 999, 8, 9, 10]"

Cara kasebut Arrays.fill()mung bisa digunakake karo array siji-dimensi. Yen sampeyan ngliwati array rong dimensi menyang metode kasebut, bakal dianggep minangka siji-dimensi, kanthi kabeh akibat sing bakal ditindakake.



2.Arrays.copyOf()

Kaya sing wis dingerteni, sampeyan ora bisa ngowahi ukuran array sawise digawe.

Nanging kepiye yen sampeyan pancene pengin?

Nah, yen sampeyan pengin banget, sampeyan bisa!

  • Gawe larik anyar saka dawa sing dikarepake
  • Nyalin kabeh unsur saka array pisanan menyang.

Miturut cara, iki cara sing Arrays.copyOf()ditindakake. Iki sing diarani jenenge:

Type[] name2 = Arrays.copyOf(name, length);

Cara iki ora ngganti array sing wis ana , nanging nggawe array anyar lan nyalin unsur array lawas menyang.

Yen unsur ora pas ( dawa kurang saka dawa array ana ), banjur nilai ekstra ora digatèkaké.

Yen dawa array anyar luwih gedhe tinimbang dawa lawas, sel kasebut diisi nol.

Tuladha:

int[] x = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};

int[] x2 = Arrays.copyOf(x, 5);
String str2 = Arrays.toString(x2);

int[] x3 = Arrays.copyOf(x, 15);
String str3 = Arrays.toString(x3);


Variabel str2ngandhut nilai:
"[1, 2, 3, 4, 5]"

Variabel str3ngandhut nilai:
"[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 0, 0, 0, 0, 0]"

3.Arrays.copyOfRange()

Lan apa yen sampeyan pengin njaluk Uploaded dawa 5 saka Uploaded dawa 10, nanging sampeyan kudu ngemot pungkasan 5 unsur tinimbang pisanan 5?

Ing kasus iki, cara liyane saka Arrayskelas bakal migunani - ing Arrays.copyOfRange(). Mangkene apa sing katon nalika diarani:

Type[] name2 = Arrays.copyOfRange(name, first, last);

Cara iki uga nggawe array anyar, nanging isi karo unsur saka panggonan kasepakatan ing Uploaded asli. Ing endi pisanan lan pungkasan minangka indeks saka unsur pisanan lan pungkasan sing kudu dilebokake ing array anyar.

Sesuai karo tradhisi lawas Jawa, elinga yen unsur pungkasan ora kalebu ing sawetara.

Tuladha:

int[] x = {11, 12, 13, 14, 15, 16, 17, 18, 19, 20};

int[] x2 = Arrays.copyOfRange(x, 5, 10);
String str2 = Arrays.toString(x2);

int[] x3 = Arrays.copyOfRange(x, 5, 15);
String str3 = Arrays.toString(x3);


Variabel str2ngandhut nilai:
"[16, 17, 18, 19, 20]"

Variabel str3ngandhut nilai:
"[16, 17, 18, 19, 20, 0, 0, 0, 0, 0]"


4.Arrays.sort()

Ah, suguhan sing paling enak: ngurutake . Array diurutake cukup asring ing pemrograman. Telung tumindak sing paling umum nalika nggarap array yaiku:

  • Ngurutake larik
  • Nemokake unsur minimal (utawa maksimum) saka array
  • Nemtokake indeks saka unsur ing array (nemokake unsur ing array)

Pramila pangripta Jawi kalebet sort()metode ing Arrayskelas. Iki sing diarani jenenge:

Arrays.sort(name);

Cara iki ngurutake array sing dilewati kanthi urutan munggah.

Tuladha:

int[] x = {11, -2, 3, 0, 999, -20, 8, -20, 99, -20};

Arrays.sort(x);

String str = Arrays.toString(x);



Variabel strngandhut nilai:
"[-20, -20, -20, -2, 0, 3, 8, 11, 99, 999]"

Banget, bener? Sampeyan nelpon siji cara, lan saiki sampeyan duwe array sing diurutake. ayu.

Miturut cara, sampeyan bisa nggunakake metode iki kanggo ngurutake ora mung kabeh array, nanging mung bagean. Iki sing diarani jenenge:

Arrays.sort(name, first, last);

Ing endi pisanan lan pungkasan minangka indeks sel pisanan lan pungkasan sing kudu didemek.

Sesuai karo tradhisi lawas Jawa, elinga yen unsur pungkasan ora kalebu ing sawetara.

Tuladha:

int[] x = {11, -2, 3, 0, 999, -20, 8, -20, 99, -20};

Arrays.sort(x, 4, 8);
String str = Arrays.toString(x);


Variabel strngandhut nilai:
"[11, -2, 3, 0, -20, -20, 8, 999, 99, -20]"

Kanggo ngurutake array, Jawa nggunakake algoritma pangurutan paling cepet - QuickSort . Kompleksitas komputasi gumantung saka ukuran array lan diwilang nggunakake rumus N log(N).

Ngurutake array saka 1000 unsur bakal melu babagan 3.000 mbandhingake unsur array. Ngurutake array saka siji yuta unsur bakal melu babagan 6 yuta bandingaken.



5.Arrays.binarySearch()

Inggih, lan pungkasan saka cara paling menarik saka Arrayskelas iku bisa kanggo nelusuri Nilai diwenehi ing Uploaded. Iki dudu telusuran biasa — iku telusuran binar sing ditresnani . Iki dadi:

  • Kaping pisanan, array diurutake.
  • Banjur unsur tengah array dibandhingake karo sing kita goleki.
  • Yen unsur luwih gedhe tinimbang unsur tengah, banjur telusuran terus ing sisih tengen array.
  • Yen unsur sing kita goleki kurang saka unsur tengah, mula telusuran diterusake ing sisih kiwa array.

Amarga Uploaded wis diurutake, iku bisa kanggo ngilangke setengah saka iku ing comparison siji. Banjur ing langkah sabanjure, kita mbuwang setengah liyane, lan sateruse.

Pendekatan iki ndadekake panelusuran binar cepet banget. Ing Uploaded siji yuta (!) unsur, iku bisa nemokake indeks saka unsur dikarepake ing mung 20 bandingaken. Kekurangan pendekatan yaiku array kudu diurutake dhisik, lan ngurutake uga butuh wektu.

Iki sing diarani jenenge:

int index = Arrays.binarySearch(name, value);

Where nameis jeneng Uploaded, kang kudu liwati wis diurutake (contone, nggunakake Arrays.sort()cara). Lan valueminangka unsur sing kita telusuri ing array. Asil bali dening cara punika indeks saka unsur array sing dikarepake .

Tuladha:

int[] x = {11, -2, 3, 0, 999, -20, 8, -20, 99, -20};
Arrays.sort(x);

int index1 = Arrays.binarySearch(x, 0);
int index2 = Arrays.binarySearch(x, -20);
int index3 = Arrays.binarySearch(x, 99);
int index4 = Arrays.binarySearch(x, 5);
xyaiku:
{-20, -20, -20, -2, 0, 3, 8, 11, 99, 999}

4
1(indeks 0lan 2uga bisa ditampa)
8
-7

Yen larik kasebut ngemot pirang-pirang conto unsur sing digoleki, mula algoritma kasebut mung bakal ngasilake indeks salah sawijining (ora ana jaminan manawa, ujare, sing pertama, utawa kosok balene - sing paling pungkasan. unsur duplikat).

Yen unsur ora ditemokake ing array, indeks kasebut bakal negatif.



6. Link menyang dokumentasi Oracle ing Arrayskelas

Yen sampeyan kepengin banget, sampeyan bisa maca kabeh babagan Arrayskelas lan kabeh cara ing dokumentasi resmi a href="https://docs.oracle.com/en/java/javase/14/docs/api/java.base /java/util/Arrays.html">ing situs web Oracle.

Contone, sampeyan bisa maca babagan Arrays.mismatch()lan Arrays.compare()cara. Mungkin sampeyan bakal nemokake dheweke migunani.

Lan aja bingung karo jumlah metode. Saben cara duwe 5-10 varian, sing mung beda karo jinis parameter.