从arraylist java获取值?

WIS*_*SHY 0 java arraylist

我有以下课程

   public class Patient implements Serializable {

  private int id;

  private String name;

  private String desc;
    public Patient(int id, String name, String desc) {

    this.id = id;
    this.name = name;
    this.desc=desc;
    }
Run Code Online (Sandbox Code Playgroud)

然后是这个类中的以下getter和setter方法.

宣布arraylist

  ArrayList<Patient> list = new ArrayList<Patient>();
Run Code Online (Sandbox Code Playgroud)

在列表中添加运行时数据

   list.add(new Patient(id++, name.getText(), disDesc.getText())
Run Code Online (Sandbox Code Playgroud)

现在我想读取存储在列表中的元素我该怎么做?

    System.out.println(list.get(0));
Run Code Online (Sandbox Code Playgroud)

我使用它但它返回类的对象地址

GGr*_*rec 6

你必须覆盖的toString()方法Patient.在那里,您将返回有关Patient要显示的对象的所有信息.

示例:(我个人最喜欢的)

 private static final String SEPARATOR = ", ";

 @Override
 public String toString()
 {
      StringBuilder builder = new StringBuilder();

      builder.append("ID: ").append(id).append(SEPARATOR);
      builder.append("Name: ").append(name).append(SEPARATOR);
      builder.append("Desc: ").append(desc);

      return builder.toString();
 }
Run Code Online (Sandbox Code Playgroud)

例2:

 @Override
 public String toString()
 {
      return "ID: " + id + ", Name: " + name + ", Desc: " + desc;
 }
Run Code Online (Sandbox Code Playgroud)

例3:

 @Override
 public String toString()
 {
      return MessageFormat.format("ID: {0}, Name: {1}, Desc: {2}", id, name, desc);
 }
Run Code Online (Sandbox Code Playgroud)

使用任何一个.这是一个偏好的问题.

  • @JonSkeet据我所知,`StringBuilder`比连接字符串更有效.我错了吗?我养成了使用`StringBuilder`的习惯. (4认同)
  • 为什么不使用:`return"ID:"+ id +"|名称:"+ name +"| Desc:"+ desc;`?更容易阅读IMO,同样有效.或者,使用`String.format`. (2认同)