KodeGym/Blog Jawa/Acak/Kelas Array
John Squirrels
tingkat
San Francisco

Kelas Array

Diterbitake ing grup
Halo maneh! :) Ing wulangan dina iki, kita bakal ngomong babagan kelas Array ing basa Jawa. Ing wulangan pungkasan, kita kudu ngerti struktur data sing diarani array. Kita sinau carane nggawe lan isi karo data. Lan kita ndeleng carane disimpen ing memori. Dina iki kita bakal nliti sawetara tugas lan conto nggarap array sing asring sampeyan deleng ing karya nyata. Contone, mbayangno kahanan iki: We duwe Uploaded 10 nomer acak.
int[] numbers = {167, -2, 16, 99, 26, 92, 43, -234, 35, 80};
Tugas kita yaiku ngurutake array iki kanthi urutan munggah: saka sing paling cilik nganti paling gedhe. Pungkasane, mesthine katon kaya iki: [-234, -2, 16, 26, 35, 43, 92, 99, 167] Piyé carané? Tugas iki ora sepele. Kita wis tau nindakake iki sadurunge: / Sembarang gagasan? Coba tebak. Mangkene siji solusi:
  • Bukak kabeh unsur array. Bandhingake saben unsur karo sabanjure ([0] karo [1], [1] karo [2], [2] karo [3], etc.). Yen unsur saiki luwih gedhe tinimbang sabanjure, kita ngganti, banjur pindhah menyang unsur sabanjure. Yen ora, ninggalake wong-wong mau, lan nerusake
  • Mangkono, sawise pass pisanan liwat unsur, nilai paling gedhe (167) dijamin ing sel pungkasan.
  • Saiki kita bakal pindhah liwat kabeh unsur maneh, nanging wektu iki kita bakal miwiti karo indeks [0] kanggo unsur penultimate (nomer paling gedhe wis ing panggonan) lan nggawe bandingaken lan swap padha. Sawise pass iki, ing sel penultimate, kita bakal duwe nilai paling gedhe kaloro (99).
  • Baleni proses iki kaping pirang-pirang amarga kita duwe unsur array.
Kita wis entuk ide. Saiki kita mung kudu nulis kode. Katon kaya mangkene: Kelas array lan panggunaan - 2
public class Main {

   public static void main(String[] args) {

       int[] numbers = {167, -2, 16, 99, 26, 92, 43, -234, 35, 80};

       for (int i = numbers.length - 1; i > 0; i--) {
           for (int j = 0; j < i; j++) {
           /* Compare the elements in pairs.
             If they are not in the right order,
             then swap them */
               if (numbers[j] > numbers[j + 1]) {
                   int tmp = numbers[j];
                   numbers[j] = numbers[j + 1];
                   numbers[j + 1] = tmp;
               }
           }
       }

   }
}
Uh ... Iku katon rada rumit -_- Sanajan prinsip umum bisa dingerteni, kita isih kudu nulis kode sing cukup akeh kanggo ngrampungake tugas sing prasaja. Oke, mbok menawa kita wis overestimated dhéwé? Tugas sing wis ditindakake mbokmenawa isih rumit banget kanggo kita. Ayo nyoba sing luwih prasaja. Contone, njupuk larik nomer padha.
int[] numbers = {167, -2, 16, 99, 26, 92, 43, -234, 35, 80};
Tugas kita yaiku nyalin isine menyang array liyane.
int [] numbersCopy = new int[10];
Coba kepiye carane sampeyan nggunakake apa sing wis sampeyan ngerti babagan array? Contone, sampeyan bisa ngliwati larik nomer ing daur ulang lan nulis unsur-unsur kasebut kanthi urutan dadi numbersCopy :
public class Main {

   public static void main(String[] args) {

       int[] numbers = {167, -2, 16, 99, 26, 92, 43, -234, 35, 80};

       int [] numbersCopy = new int[10];

       for (int i = 0; i < numbers.length; i++) {

           numbersCopy[i] = numbers[i];
       }

   }
}
Inggih, uh, ing kene kita wis rampung! Kayane kita wis ngrampungake masalah kasebut. Nanging, yen sampeyan kudu nindakake iki asring, kode sampeyan bakal duwe akeh puteran sing padha. Nyatane, tugas iki (lan liyane) wis suwe dirampungake dening pangripta Jawa. Kita ora perlu "reinvent setir" lan kode solusi kita dhewe. Ana kelas statis khusus ( Arrays ) kanggo mbantu sampeyan nindakake tugas umum nalika nggarap array. Metode kanggo nindakake tugas paling umum sing diadhepi dening programer Java wis ditambahake ing kelas iki. Contone, tugas ngurutake array, sing nyoba ditangani, ditanggulangi ing baris siji:
public class Main {

   public static void main(String[] args) {

       int[] numbers = {167, -2, 16, 99, 26, 92, 43, -234, 35, 80};

       Arrays.sort(numbers);

       System.out.println(Arrays.toString(numbers));

   }
}
Cara Arrays.sort () ngurutake array. Lan algoritma kasebut luwih efisien tinimbang kode sing kita tulis. Output konsol: [-234, -2, 16, 26, 35, 43, 80, 92, 99, 167] Wigati: Kanggo ngowahi array menyang string, kita nggunakake cara liya saka kelas Arrays : Arrays.toString () . Array ing Jawa ora ngganti cara toString () dhewe. Dadi, yen sampeyan mung nulis
System.out.println(numbers.toString());
kelas Obyek toString () bakal disebut. Kanggo larik, output bakal kaya iki: [I@4554617c Kita ora bakal njlèntrèhaké saiki babagan apa persis iki output. Sing utama yaiku jelas dudu sing kita butuhake. Nanging Arrays.toString () nindakake apa sing dikarepake. Miturut cara, nyalin uga gampang ditindakake karo kelas Arrays :
public class Main {

   public static void main(String[] args) {

       int[] numbers = {167, -2, 16, 99, 26, 92, 43, -234, 35, 80};

       int [] numbersCopy = Arrays.copyOf(numbers, numbers.length);
       System.out.println(Arrays.toString(numbersCopy));

   }
}
We pass menyang Arrays.copyOf () cara Uploaded asli (saka kang kita arep kanggo nyalin nilai) lan dawa saka Uploaded anyar menyang kang kita nyalin data. Ing kasus iki, kita dituduhake numbers.length minangka dawa, wiwit pengin nyalin kabeh Uploaded. Yen kita pengin nyalin mung sawetara unsur pisanan, kita bisa nemtokake dawa array sing luwih cilik:
public class Main {

   public static void main(String[] args) {

       int[] numbers = {167, -2, 16, 99, 26, 92, 43, -234, 35, 80};

       int [] numbersCopy = Arrays.copyOf(numbers, 4);
       System.out.println(Arrays.toString(numbersCopy));

   }
}
Ing kene kita nemtokake 4 minangka dawa array anyar. Mulane, mung 4 unsur nomer pisanan sing bakal disalin menyang array anyar. Output konsol: [167, -2, 16, 99] Miturut cara, Arrays uga ngidini sampeyan nyalin bagean saka array saka tengah tinimbang wiwitan array:
public class Main {

   public static void main(String[] args) {

       int[] numbers = {167, -2, 16, 99, 26, 92, 43, -234, 35, 80};

       int [] numbersCopy = Arrays.copyOfRange(numbers, 2,6);
       System.out.println(Arrays.toString(numbersCopy));

   }
}
Output: [16, 99, 26, 92] Nomer disalin menyang array anyar saka array kapindho saka unsur kapindho (inklusif) nganti unsur enem (ora klebu). Kita uga kudu mbandhingake rong susunan. Kaya metode toString () , array dhewe ora ngilangi metode sing padha () . Dadi yen kita nyoba mbandhingake kaya iki
public class Main {

   public static void main(String[] args) {

       int[] numbers = {1, 2, 3};
       int[] numbers2 = {1, 2, 3};

       System.out.println(numbers.equals(numbers2));
   }
}
banjur kita njaluk palsu. Iki amarga Object.equals () , kang mbandhingaké referensi, bakal disebut. Lan, temenan, padha beda! Nanging sing dibutuhake yaiku mbandhingake isi array, dudu referensi. Kelas Arrays ngatasi metode sing padha () kanggo nindakake apa sing dikarepake:
public class Main {

   public static void main(String[] args) {

       int[] numbers = {1, 2, 3};
       int[] numbers2 = {1, 2, 3};

       System.out.println(Arrays.equals(numbers, numbers2));
   }
}
Output: true Miturut cara, kelas Arrays ora mung dianggo karo array biasa, nanging uga karo rong dimensi:
public class Main {

   public static void main(String[] args) {

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

       int[][] numbersCopy = Arrays.copyOf(numbers, numbers.length);

       System.out.println("Are these two-dimensional arrays equal?");
       System.out.println(Arrays.deepEquals(numbers, numbersCopy));

       System.out.println(Arrays.deepToString(numbersCopy));
   }
}
Output: Apa array rong dimensi iki padha? bener [[1, 2, 3], [4, 5, 6], [7, 8, 9]] Nalika sampeyan bisa ndeleng, Arrays.copyOf () cara bisa nyalin array loro-dimensi. Lan kelas duwe cara khusus kanggo mbandhingake lan nampilake array rong dimensi: deepEquals lan deepToString () . Ing mangsa ngarep, sampeyan bakal bola-bali weruh (lan bungah ing kasunyatan sing) sing pangripta Jawa diantisipasi akeh kahanan sing kerep diadhepi dening programer, lan ngleksanakake solusi siap-digawe kanggo wong-wong mau ing basa. Nggunakake solusi iki luwih gampang lan luwih trep tinimbang reinventing setir, bener? :) Aja manawa kanggo maca dokumentasi kanggo kelas Arrays ing website Oracle . Good luck ing pasinaon!
Komentar
  • Popular
  • Anyar
  • lawas
Sampeyan kudu mlebu kanggo ninggalake komentar
Kaca iki durung duwe komentar