Struktur data yang disediakan oleh paket utilitas Java sangat kuat dan menjalankan berbagai fungsi. Struktur data ini terdiri dari antarmuka dan kelas berikut
Section Artikel
Interface Enumeration itu sendiri bukanlah struktur data, tetapi sangat penting dalam konteks struktur data lainnya. Antarmuka Pencacahan mendefinisikan cara untuk mengambil elemen berturut-turut dari struktur data. Misalnya, Enumerasi mendefinisikan metode yang disebut nextElement yang digunakan untuk mendapatkan elemen berikutnya dalam struktur data yang berisi banyak elemen
Antarmuka lawas ini telah digantikan oleh Iterator. Meskipun tidak digunakan lagi, Pencacahan dianggap usang untuk kode baru. Namun, ini digunakan oleh beberapa metode yang ditentukan oleh kelas lama seperti Vektor dan Properti, digunakan oleh beberapa kelas API lainnya, dan saat ini digunakan secara luas dalam kode aplikasi.
Enum adalah “kelas” khusus yang mewakili sekelompok konstanta (variabel yang tidak dapat diubah, seperti variabel akhir). Untuk membuat enum, gunakan kata kunci enum (bukan class atau interface), dan pisahkan konstanta dengan koma. Perhatikan bahwa mereka harus menggunakan huruf besar. Enumeration interface mendefinisikan metode yang dengannya Anda dapat menghitung (memperoleh satu per satu) elemen dalam kumpulan objek.
Metode yang dideklarasi dengan Enumeration adalah
Berikut ini merupakan contoh Enum pada java
import java.util.Vector; import java.util.Enumeration; public class EnumerationTester { public static void main(String args[]) { Enumeration days; Vector dayNames = new Vector(); dayNames.add("Sunday"); dayNames.add("Monday"); dayNames.add("Tuesday"); dayNames.add("Wednesday"); dayNames.add("Thursday"); dayNames.add("Friday"); dayNames.add("Saturday"); days = dayNames.elements(); while (days.hasMoreElements()) { System.out.println(days.nextElement()); } } }
Kemudian akan menghasilkan output berikut
Sunday
Monday
Tuesday
Wednesday
Thursday
Friday
Saturday
Contoh lain dari enum
enum Level { LOW, MEDIUM, HIGH }
Kita dapat mengakses konstanta enum dengan sintaks dot, misalnya
Level myVar = Level.MEDIUM;
Kita juga dapat memiliki enum dalam sebuah kelas
public class MyClass { enum Level { LOW, MEDIUM, HIGH } public static void main(String[] args) { Level myVar = Level.MEDIUM; System.out.println(myVar); } } //output yang akan muncul : MEDIUM
Enum sering digunakan dalam pernyataan switch untuk memeriksa nilai yang sesuai, contohnya adalah
enum Level { LOW, MEDIUM, HIGH } public class MyClass { public static void main(String[] args) { Level myVar = Level.MEDIUM; switch(myVar) { case LOW: System.out.println("Low level"); break; case MEDIUM: System.out.println("Medium level"); break; case HIGH: System.out.println("High level"); break; } } } //output yang muncul adalah Medium level
Jenis enum memiliki metode values (), yang mengembalikan larik dari semua konstanta enum. Metode ini berguna saat Anda ingin mengulang melalui konstanta enum:
for (Level myVar : Level.values()) { System.out.println(myVar); }
Untuk output yang muncul adalah
LOW
MEDIUM
HIGH
Enum bisa, seperti kelas, memiliki atribut dan metode. Satu-satunya perbedaan adalah konstanta enum bersifat publik, statis, dan final (tidak dapat diubah – tidak dapat diganti).
Enum tidak dapat digunakan untuk membuat objek, dan tidak dapat memperluas kelas lain (tetapi dapat mengimplementasikan antarmuka). Gunakan enum saat Anda memiliki nilai yang Anda tahu tidak akan berubah, seperti hari bulan, hari, warna, setumpuk kartu.
Kelas BitSet mengimplementasikan sekelompok bit atau flag yang dapat diatur dan dihapus secara individual. Kelas ini sangat berguna dalam kasus di mana Anda perlu mengikuti sekumpulan nilai Boolean; Anda cukup menetapkan sedikit untuk setiap nilai dan mengatur atau menghapusnya sebagaimana mestinya.
Kelas BitSet membuat tipe array khusus yang menyimpan nilai bit. Array BitSet dapat bertambah besar sesuai kebutuhan. Ini membuatnya mirip dengan vektor bit. Ini adalah kelas lama tetapi telah sepenuhnya direkayasa ulang di Java 2, versi 1.4. BitSet mendefinisikan dua konstruktor berikut
BitSet mengimplementasikan interface Cloneable dan menetapkan metode yang tercantum dalam jenis berikut
Program berikut menggambarkan beberapa metode yang didukung oleh struktur data ini
import java.util.BitSet; public class BitSetDemo { public static void main(String args[]) { BitSet bits1 = new BitSet(16); BitSet bits2 = new BitSet(16); // set some bits for(int i = 0; i < 16; i++) { if((i % 2) == 0) bits1.set(i); if((i % 5) != 0) bits2.set(i); } System.out.println("Initial pattern in bits1: "); System.out.println(bits1); System.out.println("\nInitial pattern in bits2: "); System.out.println(bits2); // AND bits bits2.and(bits1); System.out.println("\nbits2 AND bits1: "); System.out.println(bits2); // OR bits bits2.or(bits1); System.out.println("\nbits2 OR bits1: "); System.out.println(bits2); // XOR bits bits2.xor(bits1); System.out.println("\nbits2 XOR bits1: "); System.out.println(bits2); } }
Output yang akan dihasilkan adalah
Initial pattern in bits1:
{0, 2, 4, 6, 8, 10, 12, 14}
Initial pattern in bits2:
{1, 2, 3, 4, 6, 7, 8, 9, 11, 12, 13, 14}
bits2 AND bits1:
{2, 4, 6, 8, 12, 14}
bits2 OR bits1:
{0, 2, 4, 6, 8, 10, 12, 14}
bits2 XOR bits1:
{}
Kelas Vector mirip dengan larik Java tradisional, kecuali bahwa kelas itu dapat berkembang seperlunya untuk mengakomodasi elemen baru. Seperti sebuah array, elemen dari sebuah objek Vektor dapat diakses melalui indeks ke dalam vektor. Hal yang menyenangkan tentang menggunakan kelas Vector adalah Anda tidak perlu khawatir tentang menyetelnya ke ukuran tertentu saat pembuatan; itu menyusut dan tumbuh secara otomatis bila perlu.
Vektor mengimplementasikan array dinamis. Ini mirip dengan ArrayList, tetapi dengan dua perbedaan
Vektor terbukti sangat berguna jika Anda tidak mengetahui ukuran larik terlebih dahulu atau Anda hanya memerlukan satu yang dapat mengubah ukuran selama masa program.
Berikut adalah daftar konstruktor yang disediakan oleh kelas vektor.
Kelas Stack mengimplementasikan tumpukan elemen terakhir masuk pertama keluar (LIFO). Anda dapat menganggap tumpukan secara harfiah sebagai tumpukan objek vertikal; ketika Anda menambahkan elemen baru, itu akan ditumpuk di atas yang lain. Saat Anda menarik elemen dari tumpukan, elemen tersebut akan terlepas dari atas. Dengan kata lain, elemen terakhir yang Anda tambahkan ke tumpukan adalah yang pertama keluar.
Stack adalah subclass dari Vector yang mengimplementasikan tumpukan standar terakhir masuk, keluar pertama. Stack hanya mendefinisikan konstruktor default, yang membuat tumpukan kosong. Stack menyertakan semua metode yang ditentukan oleh Vector, dan menambahkan beberapa metode miliknya sendiri. dapat dibuat dengan menulis Stack().
Terlepas dari metode yang diwarisi dari kelas induknya Vector, Stack mendefinisikan metode berikut
Contoh dari Vector dalam Java adalah
import java.util.*; public class StackDemo { static void showpush(Stack st, int a) { st.push(new Integer(a)); System.out.println("push(" + a + ")"); System.out.println("stack: " + st); } static void showpop(Stack st) { System.out.print("pop -> "); Integer a = (Integer) st.pop(); System.out.println(a); System.out.println("stack: " + st); } public static void main(String args[]) { Stack st = new Stack(); System.out.println("stack: " + st); showpush(st, 42); showpush(st, 66); showpush(st, 99); showpop(st); showpop(st); showpop(st); try { showpop(st); } catch (EmptyStackException e) { System.out.println("empty stack"); } } }
Kemudian akan menghasilkan output berikut
stack: [ ]
push(42)
stack: [42]
push(66)
stack: [42, 66]
push(99)
stack: [42, 66, 99]
pop -> 99
stack: [42, 66]
pop -> 66
stack: [42]
pop -> 42
stack: [ ]
pop -> empty stack
Kelas Dictionary adalah kelas abstrak yang mendefinisikan struktur data untuk memetakan kunci ke nilai. Ini berguna jika Anda ingin dapat mengakses data melalui kunci tertentu daripada indeks integer. Karena kelas Dictionary bersifat abstrak, ia hanya menyediakan kerangka kerja untuk struktur data yang dipetakan kunci daripada implementasi tertentu.
Dictionary adalah kelas abstrak yang mewakili repositori penyimpanan kunci / nilai dan beroperasi seperti Map. Diberikan kunci dan nilai, Anda bisa menyimpan nilai dalam objek Dictionary. Setelah nilai disimpan, Anda dapat mengambilnya kembali dengan menggunakan kuncinya. Jadi, seperti peta, kamus dapat dianggap sebagai daftar pasangan kunci / nilai. Metode abstrak yang ditentukan oleh dictionary tercantum di bawah ini
Kelas dictionarysudah usang. Anda harus menerapkan interface Map untuk mendapatkan fungsionalitas penyimpanan kunci / nilai.
Kelas Hashtable menyediakan sarana untuk mengatur data berdasarkan beberapa struktur kunci yang ditentukan pengguna. Misalnya, dalam tabel hash daftar alamat Anda bisa menyimpan dan mengurutkan data berdasarkan kunci seperti kode pos daripada nama orang. Arti khusus dari kunci yang berkaitan dengan tabel hash sepenuhnya bergantung pada penggunaan tabel hash dan data yang dikandungnya.
Hashtable adalah bagian dari java.util asli dan merupakan implementasi konkret dari Kamus. Namun, Java 2 merekayasa ulang Hashtable sehingga ia juga mengimplementasikan antarmuka Peta. Dengan demikian, Hashtable sekarang diintegrasikan ke dalam kerangka koleksi. Ini mirip dengan HashMap, tetapi disinkronkan.
Seperti HashMap, Hashtable menyimpan pasangan kunci / nilai dalam tabel hash. Saat menggunakan Hashtable, Anda menentukan objek yang digunakan sebagai kunci, dan nilai yang ingin Anda tautkan ke kunci tersebut. Kuncinya kemudian di-hash, dan kode hash yang dihasilkan digunakan sebagai indeks tempat nilai disimpan di dalam tabel.
Berikut adalah daftar konstruktor yang disediakan oleh kelas HashTable
Contoh program Hashtable pada Java
import java.util.*; public class HashTableDemo { public static void main(String args[]) { // Create a hash map Hashtable balance = new Hashtable(); Enumeration names; String str; double bal; balance.put("Zara", new Double(3434.34)); balance.put("Mahnaz", new Double(123.22)); balance.put("Ayan", new Double(1378.00)); balance.put("Daisy", new Double(99.22)); balance.put("Qadir", new Double(-19.08)); // Show all balances in hash table. names = balance.keys(); while(names.hasMoreElements()) { str = (String) names.nextElement(); System.out.println(str + ": " + balance.get(str)); } System.out.println(); // Deposit 1,000 into Zara's account bal = ((Double)balance.get("Zara")).doubleValue(); balance.put("Zara", new Double(bal + 1000)); System.out.println("Zara's new balance: " + balance.get("Zara")); } }
Kemudian akan menghasilkan output
Qadir: -19.08
Zara: 3434.34
Mahnaz: 123.22
Daisy: 99.22
Ayan: 1378.0
Zara's new balance: 4434.34
Properti adalah subclass dari Hashtable. Ini digunakan untuk memelihara daftar nilai di mana kuncinya adalah String dan nilainya juga String. Kelas Properties digunakan oleh banyak kelas Java lainnya. Misalnya, ini adalah tipe objek yang dikembalikan oleh System.getProperties () saat mendapatkan nilai lingkungan.
Properti adalah subclass dari Hashtable. Ini digunakan untuk memelihara daftar nilai di mana kuncinya adalah String dan nilainya juga String. Kelas Properties digunakan oleh banyak kelas Java lainnya. Misalnya, ini adalah tipe objek yang dikembalikan oleh System.getProperties () saat mendapatkan nilai lingkungan. Properti menentukan variabel contoh berikut. Variabel ini menyimpan daftar properti default yang terkait dengan objek Properti. Kode membuat Properties adalah Properties defaults;
Berikut adalah daftar konstruktor yang disediakan oleh kelas properti
Contoh Properties pada Java
import java.util.*; public class PropDemo { public static void main(String args[]) { Properties capitals = new Properties(); Set states; String str; capitals.put("Illinois", "Springfield"); capitals.put("Missouri", "Jefferson City"); capitals.put("Washington", "Olympia"); capitals.put("California", "Sacramento"); capitals.put("Indiana", "Indianapolis"); // Show all states and capitals in hashtable. states = capitals.keySet(); // get set-view of keys Iterator itr = states.iterator(); while(itr.hasNext()) { str = (String) itr.next(); System.out.println("The capital of " + str + " is " + capitals.getProperty(str) + "."); } System.out.println(); // look for state not in list -- specify default str = capitals.getProperty("Florida", "Not Found"); System.out.println("The capital of Florida is " + str + "."); } }
Selanjutnya akan menghasilkan output
The capital of Missouri is Jefferson City.
The capital of Illinois is Springfield.
The capital of Indiana is Indianapolis.
The capital of California is Sacramento.
The capital of Washington is Olympia.
The capital of Florida is Not Found.