You need to implement toString in class Person:
public class Person {
    String name;
    Person(String str){
        name = str;
    }
    @Override
    public String toString() {
      return name;
    }
}
toString must return a String representation of the object. Utility methods such as append invoke toString on an object to retrieve its textual representation.
From the docs:
Returns a string representation of the object. In general, the
  toString method returns a string that "textually represents" this
  object. The result should be a concise but informative representation
  that is easy for a person to read. It is recommended that all
  subclasses override this method.
The toString method for class Object returns a string consisting of
  the name of the class of which the object is an instance, the at-sign
  character `@', and the unsigned hexadecimal representation of the hash
  code of the object. In other words, this method returns a string equal
  to the value of:
getClass().getName() + '@' + Integer.toHexString(hashCode())