jueves, 10 de mayo de 2018

Buscar un objeto dentro de una Pila (Stack) en Java




La clase Stack es una clase de las llamadas de tipo LIFO (Last In - First Out, o último en entrar - primero en salir). Esta clase hereda de la clase que ya hemos estudiado anteriormente en el curso Vector y con 5 operaciones permite tratar un vector a modo de pila o stack.

Las operaciones básicas son push (que introduce un elemento en la pila), pop (que saca un elemento de la pila), peek (consulta el primer elemento de la cima de la pila), empty (que comprueba si la pila está vacía) y search (que busca un determinado elemento dentro de la pila y devuelve su posición dentro de ella).

                       


A continuación vamos a explicar la clase Stack de Java, que implementa la interface List. Stack se traduce por “pila” y para recordar su significado podemos pensar en una pila de libros. También veremos las características más importantes de esta nueva implementación y haremos un ejemplo a modo de ejercicio.


CÓDIGO

public class Libro {
String titulo;
String autor;
int codigo;

public Libro(String titulo, String autor, int codigo)
{
this.titulo=titulo;
this.autor=autor;
this.codigo=codigo;
}

public String getTitulo() {
return titulo;
}

public void setTitulo(String titulo) {
this.titulo = titulo;
}

public String getAutor() {
return autor;
}

public void setAutor(String autor) {
this.autor = autor;
}

public int getCodigo() {
return codigo;
}

public void setCodigo(int codigo) {
this.codigo = codigo;
}
}

import java.util.Scanner;
import java.util.Stack;
import java.lang.String;
public class Principal {
public static void main(String [] args) {
System.out.println("BUSCADOR DE LIBROS EN UNA PILA");
Scanner leer = new Scanner(System.in);

Stack<Libro> piladelibros = new Stack<>();

Libro l1 = new Libro("TOMA1", "ANDRES",1000);
Libro l2 = new Libro("TOMA2", "ANA",1001);
Libro l3 = new Libro("TOMA3", "ALFREDO",1002);
Libro l4 = new Libro("TOMA4", "BRAYAN",1003);
Libro l5 = new Libro("TOMA5", "BRENDA",1004);
Libro l6 = new Libro("TOMA6", "BETO",1005);
Libro l7 = new Libro("TOMA7", "CARLOS",1006);
Libro l8 = new Libro("TOMA8", "CARLA",1007);
Libro l9 = new Libro("TOMA9", "CARMEN",1008);
Libro l10 = new Libro("TOMA10", "DANIEL",1009);
Libro l11 = new Libro("TOMA11", "DANNA",1010);
Libro l12 = new Libro("TOMA12", "ESTEFY",1011);
Libro l13 = new Libro("TOMA13", "GABY",1012);
Libro l14 = new Libro("TOMA14", "HUGO",1013);
Libro l15 = new Libro("TOMA15", "JHONATAN",1014);
piladelibros.push(l1);
piladelibros.push(l2);
piladelibros.push(l3);
piladelibros.push(l4);
piladelibros.push(l5);
piladelibros.push(l6);
piladelibros.push(l7);
piladelibros.push(l8);
piladelibros.push(l9);
piladelibros.push(l10);
piladelibros.push(l11);
piladelibros.push(l12);
piladelibros.push(l13);
piladelibros.push(l14);
piladelibros.push(l15);

boolean band= false;
String dato;
System.out.println("INGRESE EL TITULO DEL LIBRO QUE DESEA BUSCAR :");
dato= leer.nextLine();

while (!piladelibros.empty()&&!band)
{
if (piladelibros.pop().getTitulo().equals(dato))
band=true;
}
if (band)
System.out.println("SU LIBRO SE ENCUENTRA DISPONIBLE");
else {
System.out.println("LO SENTIMOS SU LIBRO NO SE ENCUENTRA DISPONIBLE");
}

}

}

Se procedió a crear dos clase:
Clase Libro que contiene los datos de los libros titulo, autor y un código.
Clase Principal donde empezamos a crear los libros con sus respectivos datos, creamos un escanear para pedir el dato a buscar y un Stack para almacenar nuestros libros.
Creamos 15 libros y cada uno usamos el push para agregar cada libro a nuestro Stack.
Declaramos una variable de tipo boolean que sea igual a false para que nos ayude en la búsqueda de nuestro libro.
Creamos una variable dato de tipo String que sera el que almacene nuestro dato pedido por pantalla, pedimos por pantalla el titulo del libro que deseamos buscar, guardamos ese titulo en nuestra variable dato.
Iniciamos un ciclo While donde la condición sea que mientras nuestra pila no este vacía y nuestro band sea falso continué a nuestro siguiente proceso que es un if donde se pregunta que si el titulo de nuestros libros sea igual al titulo de la variable dato, mientras no sean iguales el while seguirá recorriendo hasta que verifique que si hay un libro igual al del dato la variable band cambie a true y así termine el while por no cumplir con una de sus condiciones, saltando así a nuestro siguiente if donde preguntamos el estado del boolean band que si esta en true quiere decir que si hay un libro con el dato buscado y si esta en false no hay un libro con su dato solicitado.


Descarga el codigo aqui

No hay comentarios.:

Publicar un comentario