fursa08
@fursa08
Junior Android developer

Какие проблемы присутствуют в данном коде и как его улучшить?

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);
    }
}
  • Вопрос задан
  • 143 просмотра
Пригласить эксперта
Ответы на вопрос 1
tsarevfs
@tsarevfs
C++ developer
Скорее всего ошибка:
buf == stack.buf вернет true только когда это один и тот же массив, а не 2 массива с равными элементами. Используйте Arrays.equals(array1, array2). https://stackoverflow.com/a/8777279/1762922
Придирка:
Не понятно как позиция может стать меньше 0: if(position <= 0), вроде достаточно проверки на равенство.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы