La pila es una de las estructuras de datos más importantes en el lenguaje Java. Su implementación debe incluir al menos los siguientes métodos:
1. Operación pop () para abrir el elemento superior de la pila.
2. operación de empuje (E e)
3.peek() Ver el elemento superior de la pila
4.isEmpty() ¿Está vacía la pila?
Además, al implementar una pila, se deben considerar varias cuestiones:
1. El tamaño inicial de la pila y cómo agregar nuevo espacio de pila una vez que la pila esté llena
2. Se requiere sincronización al actualizar la pila.
Un ejemplo simple, usando una matriz para implementar una pila, el código es el siguiente:
Copie el código de código de la siguiente manera:
Pila de clase pública<E> {
// Java no admite matrices genéricas. Si necesita utilizarlas, utilice el contenedor proporcionado por Java.
pila de objetos privados [];
//Tamaño inicial predeterminado de la pila
int final estático privado INIT_SIZE = 2;
//Índice superior de la pila
índice int privado;
pila pública() {
pila = nuevo Objeto[INIT_SIZE];
índice = -1;
}
/**
*Método de construcción
*
* @param tamaño inicial
* Tamaño inicial de la pila
*/
Pila pública (int initSize) {
si (tamañoinicio < 0) {
lanzar nueva IllegalArgumentException();
}
pila = nuevo objeto[initSize];
índice = -1;
}
/**
* Operación pop
*
* @return objeto superior de la pila
*/
público sincronizado E pop() {
si (! está vacío()) {
E temp = mirar();
pila[índice--] = nulo;
temperatura de retorno;
}
devolver nulo;
}
/**
* Operación de empuje
*
* @param obj
* Objeto esperando ser empujado a la pila
*/
push vacío sincronizado público (E obj) {
si (está lleno()) {
Objeto[] temp = pila;
// Si la pila está llena, crea una pila con el doble del espacio de la pila actual
pila = nuevo Objeto[2 * pila.longitud];
System.arraycopy(temp, 0, pila, 0, temp.length);
}
pila[++índice] = obj;
}
/**
* Ver el objeto superior en la pila
*
* @return objeto superior de la pila
*/
público E vistazo() {
si (! está vacío ()) {
devolver (E) pila[índice];
}
devolver nulo;
}
/**
*Compruebe si la pila está vacía
*
* @return Devuelve verdadero si la pila está vacía, de lo contrario devuelve falso
*/
público booleano está vacío() {
índice de retorno == -1;
}
/**
*Compruebe si la pila está llena
*
* @return Devuelve verdadero si la pila está llena, de lo contrario devuelve falso
*/
público booleano está lleno() {
índice de retorno >= pila.longitud - 1;
}
}
Finalmente, la estructura de datos de la pila (java.util.Stack) se implementa heredando la clase Vector. En circunstancias normales, podemos usarla directamente.