CodeGym/Java Blog/Acak/Kelas koleksi di Jawa
John Squirrels
Level 41
San Francisco

Kelas koleksi di Jawa

Dipublikasikan di grup Acak
anggota
Hai! Dalam beberapa pelajaran terakhir, kita telah membuat kemajuan besar dalam penguasaan ArrayList. Namun, sejauh ini kami hanya melakukan operasi yang paling sederhana: hapus, sisipkan, dan tampilkan. Tentu saja, ini tidak mencakup daftar lengkap tugas yang harus dilakukan developer saat bekerja dengan ArrayList. Ingat pelajaran tentang array dan Arrayskelas? Pembuat Java secara khusus merancang kelas ini untuk menangani tugas paling umum yang dihadapi pemrogram saat bekerja dengan array. Dan bagaimana denganArrayList? Tentunya, ada beberapa daftar tugas umum yang perlu dilakukan dengannya. Apakah semuanya telah diimplementasikan di kelas tertentu, atau apakah kita harus menulis implementasi kita sendiri setiap saat? Tentu saja, Anda tidak perlu menulis semuanya sendiri. Operasi paling umum yang melibatkan koleksi telah diterapkan di Collectionskelas statis khusus. Kelas koleksi - 1 Di Jawa, sekelompok struktur data biasanya disebut sebagai koleksi . Data dapat disimpan dengan berbagai cara. Sejauh ini, kami hanya mempelajari ArrayListkelas, di mana data disimpan dalam array. Kami akan berkenalan dengan koleksi lain nanti. Untuk saat ini, cukup memahami bahwa Collectionskelas dirancang untuk bekerja tidak hanya denganArrayList, tetapi juga dengan jenis koleksi lainnya (oleh karena itu namanya). Jadi, tugas apa yang Collectionssebenarnya dibantu oleh kelas saat bekerja ArrayList? Yang pertama dan paling jelas adalah menyortir. Dalam pelajaran tentang array, kami mempertimbangkan contoh dengan angka. Sekarang kita akan mempertimbangkan contoh dengan string. Kelas Collectionsmengimplementasikan sort()metode untuk menyortir konten koleksi:
public class Main {

   public static void main(java.lang.String[] args) {

       String mercury = new String("Mercury");
       String venus = new String("Venus");
       String earth = new String("Earth");
       String mars = new String("Mars");
       String jupiter = new String("Jupiter");
       String saturn = new String("Saturn");
       String uranus = new String("Uranus");
       String neptune = new String("Neptune");

       ArrayList<String> solarSystem = new ArrayList<>(Arrays.asList(mercury, venus, earth, mars,
               jupiter, saturn, uranus, neptune));
       Collections.sort(solarSystem);
       System.out.println(solarSystem);

   }
}
Keluaran: [Bumi, Jupiter, Mars, Merkurius, Neptunus, Saturnus, Uranus, Venus] String diurutkan berdasarkan abjad! Tapi mengapa menurut abjad? Kelas Stringsebenarnya mengimplementasikan logika yang mengatur bagaimana string dibandingkan (yang kebetulan berdasarkan abjad). Untuk kelas yang Anda buat sendiri, Anda dapat mengimplementasikan logika perbandingan Anda sendiri, tetapi kita akan membicarakannya di pelajaran lain. Kelas Collectionsjuga membantu Anda menemukan elemen minimum dan maksimum dalam file ArrayList. Ini dilakukan dengan menggunakan metode min()dan max():
public static void main(java.lang.String[] args) {

   ArrayList<Integer> numbers = new ArrayList<>(Arrays.asList(1,2,3,4,5,6,7));
   System.out.println(Collections.max(numbers));
   System.out.println(Collections.min(numbers));

}
Keluaran: 7 1 Secara alami, ini jauh lebih nyaman daripada menulis kode secara manual untuk mengulangi semua elemen dan menemukan elemen terbesar/terkecil :) Metode lain yang sangat berguna adalah reverse(). Jika kita harus "membalik" daftarnya sehingga elemen-elemennya berada dalam urutan yang berlawanan, bagaimana kita melakukannya? Mungkin tidak akan mudah untuk menulis algoritme seperti itu sendiri :) Untungnya, reverse()metode ini sudah mengetahui caranya. Misalkan kita tidak menyukai fakta bahwa sort()metode mengurutkan planet kita menurut abjad, dan kita ingin membalik urutannya: dari Z ke A:
public class Main {

   public static void main(java.lang.String[] args) {

       String mercury = new String("Mercury");
       String venus = new String("Venus");
       String earth = new String("Earth");
       String mars = new String("Mars");
       String jupiter = new String("Jupiter");
       String saturn = new String("Saturn");
       String uranus = new String("Uranus");
       String neptune = new String("Neptune");

       ArrayList<String> solarSystem = new ArrayList<>(Arrays.asList(mercury, venus, earth, mars,
               jupiter, saturn, uranus, neptune));
       Collections.sort(solarSystem);
       Collections.reverse(solarSystem);
       System.out.println(solarSystem);

   }
}
Keluaran: [Venus, Uranus, Saturnus, Neptunus, Merkurius, Mars, Jupiter, Bumi] Kami telah banyak berbicara tentang pemilahan, urutan elemen, dll. Tetapi bagaimana jika kami memiliki tujuan yang berlawanan? Sebagai contoh, misalkan kita sedang mencoba menerapkan permainan bingo. Kami menambahkan 100 nomor ke drum. Mereka harus muncul di layar satu per satu. Pemain pertama yang mencoret semua angka pada tiketnya menang. Ini mudah diimplementasikan menggunakan shuffle()metode:
public class Main {

   public static void main(java.lang.String[] args) {

       ArrayList<Integer> bingoDrum = new ArrayList<>(100);
       for (int i = 1; i <= 100; i++) {

           bingoDrum.add(i);// add the numbers 1 to 100 to the drum
       }

       Collections.shuffle(bingoDrum);// Mix it up
       System.out.println ("Your attention, please! Here are the first 10 numbers from the drum!");
       for (int i = 0; i < 10; i++) {

           System.out.println(bingoDrum.get(i));
       }

   }
}
Keluaran: Mohon perhatiannya! Inilah 10 angka pertama dari drum! 32 61 4 81 25 8 66 35 42 71 Semudah itu! Masalahnya terpecahkan, dan bagian permainan kita sudah ditulis :) Sekarang mari kita bayangkan situasi yang berbeda. Sebelumnya, kami membuat solarSystemdaftar yang berisi planet. Dan tampaknya cocok untuk kami dalam segala hal kecuali satu: Anda dapat menghapus item darinya dan menambahkan yang baru ! Ini jelas bukan perilaku yang kami harapkan: Tata surya seharusnya tidak dapat diubah dalam program kami. Kelas Collectionsmemiliki metode yang sangat menarik: unmodifiableList(). Itu membuat daftar yang tidak dapat diubah dari daftar yang diteruskan sebagai argumen. Anda tidak dapat menambah atau menghapus item dari daftar ini. Saat berurusan dengan daftar planet di tata surya, inilah yang kita inginkan!
public class Main {

   public static void main(java.lang.String[] args) {

       String mercury = new String("Mercury");
       String venus = new String("Venus");
       String earth = new String("Earth");
       String mars = new String("Mars");
       String jupiter = new String("Jupiter");
       String saturn = new String("Saturn");
       String uranus = new String("Uranus");
       String neptune = new String("Neptune");

       List<String> solarSystem = Collections.unmodifiableList(new ArrayList<>(Arrays.asList(mercury, venus, earth, mars,
               jupiter, saturn, uranus, neptune)));
       solarSystem.add("Pluto");// Try to add a new element
   }
}
Keluaran: Pengecualian di utas "utama" java.lang.UnsupportedOperationException di java.util.Collections$UnmodifiableCollection.add(Collections.java:1075) at Main.main(Main.java:21) Ini adalah kesalahan: Anda tidak bisa tambahkan apapun ke solarSystem! Satu-satunya hal yang perlu Anda perhatikan di sini adalah fakta bahwa metode ini mengembalikan List<>(bukan ArrayList<>), karena jenis ini umum untuk semua jenis daftar. Situasi lain yang cukup umum yang dapat dengan mudah terjadi adalah pemrogram menambahkan elemen dalam urutan yang salah. Jika ini terjadi dan kami menemukan bahwa Merkurius dan Neptunus tercampur, kami dapat memperbaiki kesalahan ini menggunakan swap()metode:
public class Main {

   public static void main(java.lang.String[] args) {

       String mercury = new String("Mercury");
       String venus = new String("Venus");
       String earth = new String("Earth");
       String mars = new String("Mars");
       String jupiter = new String("Jupiter");
       String saturn = new String("Saturn");
       String uranus = new String("Uranus");
       String neptune = new String("Neptune");

       ArrayList<String> solarSystem = new ArrayList<>(Arrays.asList(neptune, venus, earth, mars
       , jupiter, saturn, uranus, mercury));// The planets are in the wrong order
       System.out.println(solarSystem);

       Collections.swap(solarSystem, solarSystem.indexOf(mercury), solarSystem.indexOf(neptune));
       System.out.println(solarSystem);

   }
}
Kami meneruskan ke swap()metode daftar kami dan indeks dari dua elemen yang perlu ditukar. Perhatikan bahwa metode ini bekerja dengan indeks, bukan referensi. Jadi, di sini kita harus menggunakan ArrayList.indexOf()metode tersebut. Keluaran: [Neptunus, Venus, Bumi, Mars, Jupiter, Saturnus, Uranus, Merkurius] [Merkurius, Venus, Bumi, Mars, Jupiter, Saturnus, Uranus, Neptunus] Terakhir, kita akan berkenalan dengan metode yang sangat menarik: disjoint(). Ini memeriksa apakah dua koleksi berpotongan, yaitu apakah mereka memiliki setidaknya satu elemen identik . Jika tidak, itu mengembalikan true. Jika mereka melakukannya, maka hasilnya salah
public class Main {

   public static void main(java.lang.String[] args) {

       String mercury = new String("Mercury");
       String venus = new String("Venus");
       String earth = new String("Earth");
       String mars = new String("Mars");
       String jupiter = new String("Jupiter");
       String saturn = new String("Saturn");
       String uranus = new String("Uranus");
       String neptune = new String("Neptune");

       ArrayList<String> solarSystemPart1 = new ArrayList<>(Arrays.asList(mercury, venus, earth, mars));
       ArrayList<String> solarSystemPart2 = new ArrayList<>(Arrays.asList(jupiter, saturn, uranus, neptune));

       System.out.println(Collections.disjoint(solarSystemPart1, solarSystemPart2));

   }
}
Seperti yang Anda lihat, kedua daftar kami memiliki elemen yang sama sekali berbeda, sehingga program menghasilkan true . Ini adalah kelas yang menarik dan sangat berguna. Seperti Arrays, itu melakukan banyak pekerjaan rutin dan membosankan bagi kita, membuat kita fokus pada hal lain.
Komentar
  • Populer
  • Baru
  • Lama
Anda harus login untuk memberikan komentar
Halaman ini belum memiliki komentar