Вывод ссылки вместо содержимого в стеке
проблема состоит в том, что при выводе моей персоны выдается, как я понимаю, ссылка на этот экземпляр класса персон.
public class StackMas { // реализация самого стека
Person[] stack;
int top;
int sizeStack;
public StackMas(int sizeStack) {
this.sizeStack = sizeStack;
stack = new Person[sizeStack];
top = -1;
}
private void isUniqPerson(Person[] stack, Person addPerson){
if(addPerson == null){
throw new IllegalArgumentException("person equal null!");
}
for (int i = 0; i < stack.length; i++) {
if(addPerson.equals(stack[i])){
throw new IllegalArgumentException("person already add in stack persons!!!");
}
}
}
void push(Person person){
if (person == null) {
throw new IllegalArgumentException("person equal null!");
}
if (stack.length <= sizeStack){
isUniqPerson(stack, person);
stack[++top] = person;
}
}
Person peek(){
if (top == -1)
throw new EmptyStackException();
return stack[top];
}
Person pop(){
return stack[top--];
}
boolean isEmpty(){
return (top==-1);
}
}
public class Person { // создание персоны
String firstName;
String lastName;
int age;
public Person(String firstName, String lastName, int age) {
this.firstName = firstName;
this.lastName = lastName;
this.age = age;
}
}
public class TestStack { // тест моего стека и создание персоны
public static void main(String[] args) {
StackMas stack = new StackMas(5);
Person personMax = new Person("Maksim", "Shesterkin", 18);
Person personAndrey = new Person("Andrey", "Shesterkin", 24);
Person personAndrew = new Person("Andrey", "Shesterkin", 24);
stack.push(personMax);
System.out.println(personMax);
System.out.print("Стек: ");
while (!stack.isEmpty()) {
Person value = stack.pop();
System.out.println();
System.out.println(value);
}
System.out.println("");
}
}
Ответы (1 шт):
Автор решения: E.Builin
→ Ссылка
Вам нужно переопределить метод toString() в вашем классе Person. Тогда при выводе его в println будет выводиться не ссылка, а та строка, которую вы определите. По умолчанию унаследованный от Object метод возвращает ссылку, что вы и видите.