Terry Li
Terry Li

Reputation: 17268

How to override the ToString method of ArrayList of object?

class Person {
  public String firstname;
  public String lastname;
}

Person p1 = new Person("Jim","Green");
Person p2 = new Person("Tony","White");

ArrayList<Person> people = new ArrayList<Person>();

people.add(p1);
people.add(p2);

System.out.println(people.toString());

I'd like the output to be [Jim,Tony], what is the simplest way to override the ToString method if such a method exists at all?

Upvotes: 4

Views: 7514

Answers (4)

Rohit Jain
Rohit Jain

Reputation: 213281

You actually need to override toString() in your Person class, which will return the firstname, because, ArrayList automatically invokes the toString of the enclosing types to print string representation of elements.

@Override
public String toString() {
    return this.firstname;
}

So, add the above method to your Person class, and probably you will get what you want.

P.S.: - On a side note, you don't need to do people.toString(). Just do System.out.println(people), it will automatically invoke the toString() method for ArrayList.

Upvotes: 5

chaosguru
chaosguru

Reputation: 1983

In this case you have to override the toString method of Person class since arrayList just iterates the Person class instance.

Upvotes: 0

Zaw Than oo
Zaw Than oo

Reputation: 9935

Write override method toString() method in Person class.

public String toString() {
    return firstname;
}

Upvotes: 2

Chris Gerken
Chris Gerken

Reputation: 16392

You can write a static helper method on the Person class:

public static String toString(ArrayList<Person> people) {

    Iterator<Person> iter = people.iterator();

    ....


}

Upvotes: 2

Related Questions