краткое содержание
После изучения вектора мы начнем обучать стек. Стек простой, он наследует от вектора. Метод обучения все же, как и раньше. Во -первых, есть целостное понимание стека, а затем изучить его исходный код; Наконец научитесь использовать его с помощью примеров.
Стек - это стек. Его характеристики: первое и длится (Фило, сначала в последнее время).
Стек в Java Toolkit унаследован от вектора (векторная очередь). Поскольку вектор реализуется с помощью массивов, это означает, что стек также реализуется через массивы, а не связанные списки. Конечно, мы также можем использовать LinkedList в качестве стека! В «подробном введении в вектор (анализ исходного кода) и примеры использования серии сбора Java 06», структура данных вектора была подробно введена, и структура данных стека здесь не будет объяснена.
java.lang.object
↳ java.util.abstractcollection <e>
↳ java.util.abstractlist <e>
↳ java.util.Vector <e>
↳ java.util.stack <e>
Общедоступный стек класса <e> Extends Vector <e> {}
Взаимосвязь между стеком и коллекцией заключается в следующем:
Степень имеет только один конструктор по умолчанию, следующим образом:
Куча()
API стека
Стек - это стек, а его обычно используется API следующим образом:
логический пустой ()
синхронизированный e peek ()
синхронизированный e pop ()
E push (e объект)
Синхронизированный поиск int (объект O)
Поскольку стек и наследство от вектора, он также содержит все API в векторе.
Исходный код стека очень прост, давайте узнаем его ниже.
пакет java.util; publicclass Stack <e> Extends Vector <e> {// идентификатор версии. Это используется для управления обновлением версий, поэтому вам не нужно обращать на это внимание! Частный статический последний длинный серийный режим = 1224463164541339165L; // Constructor public Stack () {} // push function: Сохранить элементы в верхнюю часть стека Public E push (e item) {// Сохранить элементы в верхнюю часть стека. // реализация addelement () находится в Vector.java Addelement (Item); вернуть элемент; } // Функция POP: вернуть верхний элемент стека и удалить его из стека Public Synchronized e pop () {e obj; int len = size (); obj = peek (); // Удалить верхний элемент стека, removeElementat () находится в Vector.java RemoveElementat (Len - 1); вернуть OBJ; } // Функция PEEK: вернуть верхний элемент стека, без операции удаления публичный синхронизированный e peek () {int len = size (); if (len == 0) бросить новый пустогостакакексапс (); // Возврат верхнего элемента стека, elementat () реализован в Vector.java. return Elementat (Len - 1); } // будь то стек пустым общедоступным пулевым пустым () {return size () == 0; } // Найти положение «элемента o» в стеке: от нижней части стека до верхней части стека, публичный синхронизированный int search (Object O) {// Получить индекс элементов, elementat () реализован в Vector.java. int i = lastindexof (o); if (i> = 0) {return size () - i; } return -1; }} (01) стек фактически реализуется через массивы.
Когда выполняется толчок (т.е. толчок элемента в стек), он добавляет элемент к концу массива.
При выполнении PEEK (то есть верхний элемент в стеке удаляется и не выполняется удаление), это элемент, который возвращает конец массива.
При выполнении POP (то есть, вытащите верхний элемент в стеке и удаляя элемент из стека), он должен вывести элемент в конце массива, а затем удалить элемент из массива.
(02) стек наследует от вектора, что означает, что как свойства, так и функции, которые имеет вектор, владеет стеком.
Ниже мы узнаем, как использовать стек через примеры
Импорт java.util.stack; import java.util.iterator; импорт java.util.list;/*** @desc Stack. Проверьте использование общих API * * @author Skywang */public class Stacktest {public static void main (string [] args) {stack stach = new Stack (); // добавить 1,2,3,4,5 в стек для (int i = 1; i <6; i ++) {stack.push (string.valueof (i)); } // Траверсировать и распечатать стек итератор // Найти положение «2» в стеке и выходе int pos = stack.search ("2"); System.out.println («Пост 2 IS:»+pos); // после верхнего элемента стека щенков, raverse stack.pop (); iteratorthroughrandomaccess (стек); // После верхнего элемента стека Peek, Stack Stack Stack val = (String) Stack.peek (); System.out.println ("peek:"+val); iteratorthroughrandomaccess (стек); // Traverse Stack iteratorThroughiterator (стек) через итератор; } / ** * Траверс стек через быстрый доступ * / public static void iteratorThroughrandomaccess (список) {string val = null; for (int i = 0; i <list.size (); i ++) {val = (string) list.get (i); System.out.print (val+""); } System.out.println (); } / ** * Итерация через итератор * / public static void iteratorThroughiterator (список) {string val = null; for (iterator iter = list.iterator (); iter.hasnext ();) {val = (string) iter.next (); System.out.print (val+""); } System.out.println (); }}Результаты работы:
1 2 3 4 5
Поставка 2: 4
1 2 3 4
PEEK: 4
1 2 3 4
1 2 3 4