Quiero crear una pila en Java, pero repare el tamaño. Por ejemplo, cree una nueva pila, establezca el tamaño en 10, luego, cuando coloque elementos en la pila, se llene y cuando se llene hasta diez, el último elemento de la pila se empujará (se eliminará). Quiero usar Stack porque usa LIFO y se adapta muy bien a mis necesidades.Crear una pila de tamaño fijo
Pero el método setSize() que Stack hereda de Vector no parece limitar realmente el tamaño de la pila. Creo que me falta algo acerca de cómo funcionan las pilas, o quizás las pilas no estaban destinadas a ser restringidas por lo que es imposible. ¡Por favor, enséñame!
FYI el método setSize se hereda de Vector, lo que significa que setSize hará que los nulos se agreguen para llenar el nuevo tamaño provisto, o los objetos existentes más allá del nuevo tamaño se descartan. En teoría, podría usar esto haciendo if (stack.size()> = 10) {stack.setSize (10); } cada vez que empuja hacia la pila, pero sería mejor implementar su propia Clase personalizada. – Thor84no
Intenté esto originalmente solo para ver si funcionaría. Es extraño, pero parece que cuando hago el setSize() en la pila, invierte el orden de los elementos y los trunca desde allí. Así que siempre termino con los 10 elementos originales en la pila. Del mismo modo, otra forma rápida/sucia de hacerlo es (stack.size()> = 10) {stack.remove (0); } El mismo problema surge cuando invierte el orden, por lo que por alguna razón el índice 0 es el que debe eliminarse. – koopaking3
Eso probablemente solo signifique que la implementación subyacente realmente funciona de esa manera y los métodos de pila te devuelven las cosas en orden inverso, lo que tiene mucho sentido de todos modos. – Thor84no