从保存在ArrayList中的对象输出字符串值

时间:2013-11-19 18:06:28

标签: java arraylist

打印出存储在对象中的字符串时遇到一个小问题。该对象存储在ArrayList中。

我有三个使用我的程序:

朋友班:

package one;

public class Friend implements InterfaceFriend {

    private String name;
    private String email;
    private String phone;

    public Friend(String name, String phone, String email) {
        // TODO Auto-generated constructor stub
    }

    @Override
    public String getPhone() {
        return phone;
    }

    @Override
    public String getEmail() {
        return email;
    }

    @Override
    public String getName() {
        return name;
    }

    @Override
    public void setPhone(String phone1) {
        phone1 = phone;
    }

    @Override
    public void setEmail(String email1) {
        email1 = email;
    }

    @Override
    public void setName(String name1) {
        name1 = name;
    }

}

FriendInterface:

package one;

public interface InterfaceFriend {
    String getPhone(); // Returns phone number.

    String getEmail(); // Returns email.

    String getName(); // Returns name.

    void setPhone(String phone); // Sets phone.

    void setEmail(String email); // Sets email.

    void setName(String name); // Sets name.
}

和测试类:

package one;

import java.util.ArrayList;
import java.util.List;

public class FriendTest {

    static List<Friend> friends;
    static Friend friend;


    public static void main(String args[]) {

        friends = new ArrayList<Friend>();

        friend = new Friend("Jane Doe", "085-5555555", "jane.doe@gmail.com");
        friends.add(friend);

        friend = new Friend("John Doe", "085-1111111", "john.doe@gmail.com");
        friends.add(friend);

        friend = new Friend("Paul Weller", "085-3333333", "paul.weller@gmail.com");
        friends.add(friend);

        System.out.println("Friends added to list:");

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

    }
}

问题是,当我从测试类运行System.out.println(friends.toString());时,我得到了这个: 好友添加到列表: [one.Friend@38f0b51d,one.Friend@4302a01f,one.Friend@615e7597]

而是使用我想要的值的字符串。任何帮助表示赞赏。

4 个答案:

答案 0 :(得分:2)

您需要覆盖已经注释的toString()类中的Friend方法,但您还需要完成您正在使用的构造函数。

public Friend(String name, String phone, String email) {
    this.name = name;
    this.phone = phone;
    this.email = email;
}

此外,你的setter中的代码是向后的。

答案 1 :(得分:1)

在您的朋友班中,您需要覆盖toString()

public class Friend implements InterfaceFriend {
    ...
    ...

    public String toString(){
        return name + " " + email + " " + phone; // or whatever format you want printed
    }
}

答案 2 :(得分:0)

你只需覆盖toString方法。把它放在朋友班里面。问题解决了..

public String toString(){
   // return  your Strings..
}

答案 3 :(得分:0)

覆盖类中的toString(),以适合您的输出。您获得该输出的原因是因为对象中提供的默认toString()是哈希码。

public String toString(){
   return name; //assuming you only want to display the name else edit it

}