Di J2SE6, kelas Arraydeque diperkenalkan, yang mewarisi antarmuka deque (didirectional antrian). Menggunakan kelas ini, Anda dapat mengimplementasikan fungsi kelas java.util.Stack sendiri, dan menghapus fungsi sinkronisasi multi-threaded dari java.util.stack.
Misalnya, buat tumpukan yang menyimpan jenis integer, cukup buat variabel kelas ArrayDeque sebagai properti di kelas, dan kemudian tentukan sebagai tumpukan dan masukkan tumpukan, dan amati elemen -elemen di bagian atas tumpukan, dan langsung mengoperasikan variabel instance dari arraydeque.
impor java.util.arraydeque; Impor java.util.deque; kelas publik integerStack {private deque <integer> data = arraydequent new <integer> (); public void push (elemen integer) {data.addfirst (elemen); } public integer pop () {return data.removefirst (); } peek integer publik () {return data.peekfirst (); } public string toString () {return data.toString (); } public static void main (string [] args) {integerstack stack = new integerStack (); untuk (int i = 0; i <5; i ++) {stack.push (i); } System.out.println (stack); System.out.println ("Setelah mendorong 5 elemen:" + stack); int m = stack.pop (); System.out.println ("Popped Element =" + M); System.out.println ("Setelah muncul 1 elemen:" + stack); int n = stack.peek (); System.out.println ("Elemen Peeked =" + n); System.out.println ("Setelah mengintip 1 elemen:" + stack); }} Kode Sumber Java.util.arraydeque:
elemen transien privat E []; kepala int trasien pribadi; ekor int trasien pribadi; /*Lokasi di mana E disimpan di sini disimpan dari posisi terakhir dari array elemen*/ public void addFirst (e e) {if (e == null) melempar nullpointerException baru (); elemen [head = (head - 1) & (elemen.length - 1)] = e; // default untuk kapasitas array pertama adalah 16, head = (0-1) & (16-1) = 15 if (head == tail) doublecapacity (); } /*Setiap kali kapasitas diperluas, dimasukkan kembali ke array baru dalam urutan penyisipan, dan yang terbaru dimasukkan ditempatkan pada posisi pertama array. */ private void doublecapacity () {assert head == tail; int p = head; int n = elemen.length; int r = n - p; // Jumlah elemen di sebelah kanan p int newcapacity = n << 1; if (newcapacity <0) melempar IllegalStateException baru ("Maaf, Deque Too Big"); Objek [] a = objek baru [newcapacity]; System.ArrayCopy (Elemen, P, A, 0, R); System.ArrayCopy (Elemen, 0, A, R, P); elemen = (e []) a; head = 0; ekor = n; } public e RemestFirst () {e x = pollfirst (); if (x == null) melempar nosuchelementException baru (); mengembalikan x; } public e PollFirst () {int h = head; E hasil = elemen [h]; // elemen adalah null jika deque kosong if (hasil == null) return null; elemen [h] = null; // Setel ulang posisi ini dalam array ke null untuk pengumpulan sampah yang nyaman. head = (h + 1) & (elemen.lement - 1); // membalikkan nilai kepala, yang setara dengan memindahkan pointer tumpukan ke bawah satu kisi. Misalnya, hasil pengembalian 12-antikan 13; } public e peekfirst () {return elemen [head]; // elemen [head] adalah nol jika deque kosong}Di atas adalah semua tentang artikel ini, saya harap akan sangat membantu bagi semua orang untuk belajar pemrograman Java.