resumo
Depois de aprender o vetor, começaremos a aprender a pilha. A pilha é simples, herda do vetor. O método de aprendizado ainda é o mesmo de antes. Primeiro, tenha um entendimento holístico da pilha e aprenda seu código -fonte; Finalmente, aprenda a usá -lo através de exemplos.
A pilha é a pilha. Suas características são: Primeiro dentro e por último (filo, primeiro na última saída).
A pilha no kit de ferramentas Java é herdada do vetor (fila de vetor). Como o vetor é implementado por meio de matrizes, isso significa que a pilha também é implementada por meio de matrizes, não listas vinculadas. Obviamente, também podemos usar o LinkedList como uma pilha! Em "Introdução detalhada ao vetor (análise de código fonte) e exemplos de uso da série de coleta Java 06", a estrutura de dados do vetor foi introduzida em detalhes e a estrutura de dados da pilha não será explicada aqui.
java.lang.Object
↳ java.util.abstractCollection <E>
↳ java.util.abstractList <E>
↳ java.util.Vector <E>
↳ java.util.stack <E>
classe pública Stack <e> estende o vetor <e> {}
A relação entre a pilha e a coleção é a seguinte:
A Stack tem apenas um construtor padrão, como segue:
Pilha()
API da pilha
A pilha é a pilha, e sua API comumente usada é a seguinte:
Booleano vazio ()
E peek sincronizado ()
Sincronizado E POP ()
E push (e objeto)
Sincronizada Int Search (objeto O)
Como pilha e herdamento do vetor, ele também contém todas as APIs no vetor.
O código -fonte da Stack é muito simples, vamos aprender abaixo.
pacote java.util; publicClass Stack <e> estende o vetor <e> {// ID da versão. Isso é usado para o controle de atualização da versão, para que você não precise prestar atenção aqui! private estático final serialversionUid = 1224463164541339165L; // construtor public Stack () {} // Função de push: salve elementos na parte superior da pilha pública e push (e item) {// salve elementos na parte superior da pilha. // A implementação do addElement () está no Vector.java addElement (item); item de retorno; } // Função pop: Retorne o elemento superior da pilha e exclua -a da pilha pública sincronizada e pop () {e obj; int len = size (); obj = peek (); // Exclua o elemento superior da pilha, removelementat () está em vetor.java removelementat (len - 1); retornar obj; } // Função de peek: retorne o elemento superior da pilha, sem a operação de exclusão pública sincronizada e peek () {int len = size (); if (len == 0) lança new emptystackSception (); // retorna o elemento superior da pilha, elementat () é implementado no vetor.java. retornar elementat (len - 1); } // se a pilha está vazia em vazio } // Encontre a posição de "elemento o" na pilha: da parte inferior da pilha até a parte superior da pilha, o público sincronizado Int Search (objeto o) {// Get the Element Index, elementat () é implementado em vetor.java. int i = lastIndexOf (O); if (i> = 0) {return size () - i; } retornar -1; }} (01) A pilha é realmente implementada por meio de matrizes.
Quando o push é realizado (ou seja, empurrando o elemento para a pilha), é anexando o elemento ao final da matriz.
Ao executar o PEEK (ou seja, o elemento superior na pilha é removido e nenhuma exclusão é realizada), é o elemento que retorna o final da matriz.
Ao executar um POP (ou seja, retirar o elemento superior na pilha e remover o elemento da pilha), é para retirar o elemento no final da matriz e excluir o elemento da matriz.
(02) A pilha herda do vetor, o que significa que as propriedades e as funções que o vetor possui, a pilha possui.
Abaixo, aprendemos a usar a pilha através de exemplos
importar java.util.stack; importar java.util.iterator; importar java.util.list;/*** @Desc Stack's Test Program. Teste o uso de APIs comuns * * @Author Skywang */public class Stacktest {public static void main (string [] args) {Stack Stack = new Stack (); // Adicione 1,2,3,4,5 à pilha para (int i = 1; i <6; i ++) {Stack.push (string.valueof (i)); } // atravessar e imprimir o iterador de pilha ARHOURGHRANDOMOCESS (Pilha); // Encontre a posição de "2" na pilha e saída int poss = Stack.search ("2"); System.out.println ("O post de 2 é:"+pos); // após o elemento superior da pilha de filhotes, Traverse Stack.pop (); iteratorthroughrandomaccess (pilha); // Após o elemento superior da pilha de peek, Traverse Stack String val = (String) Stack.peek (); System.out.println ("Peek:"+val); iteratorthroughrandomaccess (pilha); // traverse pilha iteratorthroughiterator (pilha) através do iterador; } / ** * Atravesse a pilha através de acesso rápido * / public static void iteratorthroughrandomAccess (lista de lista) {string val = null; for (int i = 0; i <list.size (); i ++) {val = (string) list.get (i); System.out.print (val+""); } System.out.println (); } / ** * Atravessando a pilha através de um iterador * / public static void iteratorthroughiterator (lista de lista) {string val = null; for (iterator iter = list.iterator (); iter.hasnext ();) {val = (string) iter.next (); System.out.print (val+""); } System.out.println (); }}Resultados em execução:
1 2 3 4 5
A posição de 2 é: 4
1 2 3 4
Peek: 4
1 2 3 4
1 2 3 4