ringkasan
Setelah belajar vektor, kami akan mulai belajar tumpukan. Tumpukan sederhana, warisan dari vektor. Metode pembelajaran masih sama seperti sebelumnya. Pertama, memiliki pemahaman holistik tentang tumpukan, lalu pelajari kode sumbernya; Akhirnya belajar menggunakannya melalui contoh.
Tumpukan adalah tumpukan. Karakteristiknya adalah: pertama di dalam dan terakhir (filo, pertama di terakhir).
Tumpukan di Java Toolkit diwarisi dari vektor (antrian vektor). Karena vektor diimplementasikan melalui array, ini berarti bahwa tumpukan juga diimplementasikan melalui array, bukan daftar yang ditautkan. Tentu saja, kami juga dapat menggunakan LinkedList sebagai tumpukan! Dalam "Pengantar Detail untuk Vektor (Analisis Kode Sumber) dan Contoh Penggunaan Java Collection Series 06", struktur data vektor telah diperkenalkan secara rinci, dan struktur data Stack tidak akan dijelaskan di sini.
java.lang.Object
↳ java.util.abstractcollection <E>
↳ java.util.abstractlist <E>
↳ java.util.vector <E>
↳ java.util.stack <E>
Tumpukan kelas publik <E> memperluas vektor <E> {}
Hubungan antara tumpukan dan koleksi adalah sebagai berikut:
Stack hanya memiliki satu konstruktor default, sebagai berikut:
Tumpukan()
API Stack
Tumpukan adalah tumpukan, dan API yang umum digunakan adalah sebagai berikut:
boolean kosong ()
e peek yang disinkronkan ()
E pop yang disinkronkan ()
E push (objek e)
Pencarian int yang disinkronkan (Objek O)
Karena tumpukan dan warisan dari vektor, itu juga berisi semua API dalam vektor.
Kode sumber Stack sangat sederhana, mari kita pelajari di bawah ini.
Paket java.util; publicclass stack <E> Memperluas vektor <E> {// ID versi. Ini digunakan untuk kontrol peningkatan versi, jadi Anda tidak perlu memperhatikannya di sini! SerialVersionuid Long Final Pribadi = 1224463164541339165L; // Konstruktor Stack Public () {} // Fungsi Push: Simpan elemen ke bagian atas Push Public E PUSH (item E) {// Simpan elemen ke bagian atas tumpukan. // Implementasi addElement () ada di vector.java addelement (item); item pengembalian; } // Fungsi Pop: Kembalikan elemen teratas tumpukan dan hapus dari tumpukan publik yang disinkronkan e pop () {e obj; int len = size (); obj = peek (); // hapus elemen atas tumpukan, remeempleElementat () ada di vektor.java removeElementat (len - 1); kembalikan obj; } // Fungsi Peek: Kembalikan elemen teratas dari tumpukan, tanpa operasi penghapusan publik yang disinkronkan e peek () {int len = size (); if (len == 0) lempar baru kosongStackException (); // Kembalikan elemen teratas dari tumpukan, elementat () diimplementasikan di vector.java. return elementat (len - 1); } // apakah tumpukan kosong boolean public empt ofDEH () {return size () == 0; } // Temukan posisi "elemen o" di tumpukan: dari bagian bawah tumpukan ke bagian atas tumpukan, pencarian int tersinkronisasi publik (objek o) {// Dapatkan indeks elemen, elementat () diimplementasikan di vector.java. int i = lastIndexOf (o); if (i> = 0) {return size () - i; } return -1; }} (01) Stack sebenarnya diimplementasikan melalui array.
Ketika dorongan dilakukan (yaitu, mendorong elemen ke dalam tumpukan), itu dengan menambahkan elemen ke ujung array.
Saat mengeksekusi Peek (yaitu, elemen teratas pada tumpukan dihapus dan tidak ada penghapusan yang dilakukan), itu adalah elemen yang mengembalikan ujung array.
Saat mengeksekusi pop (mis., Mengambil elemen teratas pada tumpukan dan menghapus elemen dari tumpukan), itu adalah untuk mengeluarkan elemen di ujung array dan kemudian menghapus elemen dari array.
(02) Stack mewarisi dari vektor, yang berarti bahwa baik properti dan fungsi yang dimiliki vektor, Stack dimiliki.
Di bawah ini kita belajar cara menggunakan tumpukan melalui contoh
Impor java.util.stack; import java.util.iterator; impor java.util.list;/*** program pengujian Stack @desc. Uji penggunaan API umum * * @author skywang */kelas publik StackTest {public static void main (string [] args) {stack stack = new stack (); // Tambahkan 1,2,3,4,5 ke tumpukan untuk (int i = 1; i <6; i ++) {stack.push (string.valueof (i)); } // melintasi dan mencetak stack iteratorThroughRandomAccess (stack); // Temukan posisi "2" di stack dan output int pos = stack.search ("2"); System.out.println ("Posting 2 adalah:"+pos); // setelah elemen top stack, traverse stack.pop (); IteratorThroughRandomAccess (Stack); // Setelah mengintip elemen atas, traverse stack string val = (string) stack.peek (); System.out.println ("Peek:"+Val); IteratorThroughRandomAccess (Stack); // Traverse Stack IteratorThroughIterator (Stack) melalui Iterator; } / ** * Traverse Stack melalui akses cepat * / public static void iteratorThroughRandomAccess (daftar daftar) {string val = null; untuk (int i = 0; i <list.size (); i ++) {val = (string) list.get (i); System.out.print (val+""); } System.out.println (); } / ** * iterate melalui iterator * / public static void iteratorThroughIterator (daftar daftar) {string val = null; untuk (iterator iter = list.iterator (); iter.hasnext ();) {val = (string) iter.next (); System.out.print (val+""); } System.out.println (); }}Hasil Menjalankan:
1 2 3 4 5
Postion of 2 adalah: 4
1 2 3 4
Peek: 4
1 2 3 4
1 2 3 4