public class Stack {
private final Object[] buf;
private int position;
public Stack(int size) {
buf = new Object[size];
}
public void push(Object o) {
if(position > buf.length - 1)
throw new OutOfMemoryError();
buf[position++] = o;
}
public Object pop() {
if(position <= 0)
return null;
return buf[--position];
}
public boolean isEmpty() {
return (position == 0);
}
public boolean equals(Stack stack) {
return buf == stack.buf;
}
}
В дополнение отмечу еще:
Stack
болтается сам по себе.equals()
уже и написали и прокомментировали - поддержуpeek()
- взять значение на вершине стека без выталкиванияIndexOutOfBoundException
или же тупо терять значение на дне стека сдвигая все значения ко днуStack<T>
- код принципиально не изменится, зато станет приятнее1-ое предложение:
Пишите isEmpty() в методе pop, так эта переменная мимо нуля проскочить не может.
2-ое предложение:
Если вам нужен стак с одинаковыми по типу элементами, вам стоит воспользоваться дженериками.
И у вас одна серьезная проблема:
Метод equals написан неправильно. Он сравнивает лишь ссылки на объекты. А вам нужно сравнить их содержимое. Правильное решение(если я правильно понял посыл):
@Override
public boolean equals(Object stack) {
if(!(stack instanceof Stack)) {
return false;
}
if(stack == null) {
return false;
}
if(((Stack)stack).buf.length != buf.length || ((Stack)stack).position != position) {
return false;
}
for(int i = 0; i < position; i++) {
if(!((Stack)stack).buf[i].equals(buf)) {
return false;
}
}
return true;
}
И добавьте hashcode, как это советуют сделать люди из комментариев
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
подскажите, как использовать VBO в libgdx? У меня проблема, что есть персонаж с костями, и их должно быть много, и проседает fps, и хотел бы ускорить...
Ребята, выручайте, методы не работают правильно почему-тоГеттеры и Сеттеры классов Автор и Сообщение работают исправно, они прошли тест
Экран при первом запуске называется onBoardingЕсть куча готовых решений на гитхабе
Имеется отчет, в котором требуется задать для TextField свойство "Выровнять текст по ширине",